ホームページ  >  に質問  >  本文

java - Spring boot 读取 放在 jar 包外的,log4j 配置文件,系统有创建日志文件,不写入日志信息。

如下图所示,运行的jar 包和 log4j 的配置文件放在同一个目录,jar包内没有任何配置文件:

在spring boot 框架的 main 方法中,通过下面这种方式,加载jar 包外的log4j配置文件

log4j配置文件的输出位置如下:

运行java -jar gf-mfile.jar 之后,控制台有info 日志信息,如下图:


系统也能够创建 micofile.log 日志文件,但是,文件为null,0字节,里面没有任何数据,info 日志信息没有写入文件中,如下图:

问题:
如果,我将log4j配置文件 打到jar 包中,如下图:

执行jar,日志文件是能够生成日志信息的。我把log4j配置文件,放到和jar 包同级目录就只创建日志文件不写入日志信息了。

为什么配置文件放到jar包外,日志文件中没有内容? 请大神赐教,感激不尽……
(本人推测,是否是main方法中的读取,log4j 配置文件的代码有问题,如果是这样应该怎么修改?)

阿神阿神2742日前1510

全員に返信(3)返信します

  • 黄舟

    黄舟2017-04-18 10:57:51

    実行パラメータ、特にクラスパスパラメータ、パッケージ外の設定ファイルがクラスパスに含まれているかどうかも確認する必要があります。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    1. 設定ファイル内のLOGの出力レベルを確認します
    2. コード内のLoggerコードが出力レベルと一致するかどうかを確認します

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    以下の主人公の提案 (捏造された信念) に従って、問題は最終的に正常に解決されました。 以下に、問題を解決するための詳細な手順を記録します。
    まず、jar パッケージで MANIFEST.MF ファイルを見つけて、Main-ファイルメソッドのクラス:

    次のコマンドを実行します:

    リーリー

    ログファイルに情報があります。

    =========付録、java -cp コマンド分析===============
    java -cp .;c:dir1lib.jar テスト

    -cp は -classpath と同じです。これは、指定されたクラスが実行するために依存する他のクラス (通常はクラス ライブラリ、jar パッケージなど) のパスです。jar パッケージへの完全なパスとセミコロン " が必要です。 ;"窓に

    Linux ではセミコロン「:」で区切られます。ワイルドカードはサポートされていません。現在のパスを表すためにドット「.」を使用して、すべての jar パッケージをリストする必要があります。
    現在では Eclipse などの IDE がありますが、一部のプログラムは手動でコンパイルされて実行される場合があり、長年の開発経験を持つ人を含む多くの人は、コマンド ラインで実行中のクラスをパラメータ化する方法を知りません。ちょっと信頼性が低いですが...
    使用例:
    java -cp ..libhsqldb.jar org.hsqldb.Server -database mydb
    または
    java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 mydb

    返事
    0
  • キャンセル返事