Heim  >  Fragen und Antworten  >  Hauptteil

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 Tage vor1509

Antworte allen(3)Ich werde antworten

  • 黄舟

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

    还需要看你的运行参数,特别是 classpath 参数,是否把这个包外的配置文件包含到了 classpath 当中。

    Antwort
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    1.检查下配置文件里面LOG的输出级别
    2.检查下代码中Logger的代码,是否和输出级别匹配

    Antwort
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    根据下面那位大侠(捏造的信仰)的建议,最终成功解决问题,下面,记录一下问题解决的详细步骤:
    首先,找到jar 包中的MANIFEST.MF 文件,找到该文件的Main-Class方法:

    执行如下命令:

    java.exe -cp .;gf-mfile.jar org.springframework.boot.loader.JarLauncher

    日志文件中有了信息。

    =========附录,java -cp 命令解析===============
    java -cp .;c:dir1lib.jar Test

    -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”

    分隔,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

    Antwort
    0
  • StornierenAntwort