Maison  >  Questions et réponses  >  le corps du texte

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 Il y a quelques jours1502

répondre à tous(3)je répondrai

  • 黄舟

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

    Vous devez également vérifier vos paramètres d'exécution, en particulier le paramètre classpath, si le fichier de configuration en dehors du package est inclus dans le classpath.

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    1. Vérifiez le niveau de sortie de LOG dans le fichier de configuration
    2. Vérifiez le code Logger dans le code pour voir s'il correspond au niveau de sortie

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    Selon la suggestion du héros ci-dessous (croyance fabriquée), le problème a finalement été résolu avec succès. Ci-dessous, enregistrez les étapes détaillées pour résoudre le problème :
    Tout d'abord, recherchez le fichier MANIFEST.MF dans le package jar et recherchez le fichier. Méthode Main-Class :

    Exécutez la commande suivante :

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

    Il y a des informations dans le fichier journal.

    =========Annexe, analyse de la commande java -cp================
    java -cp .;c:dir1lib.jar Test

    -cp est identique à -classpath. C'est le chemin des autres classes dont dépend l'exécution de la classe spécifiée, généralement une bibliothèque de classes, un package jar, etc. Le chemin complet du package jar est requis, et le le point-virgule ";" sur la fenêtre est

    séparé par un point-virgule ":" sous Linux. Les caractères génériques ne sont pas pris en charge. Tous les packages jar doivent être répertoriés, en utilisant un point "." pour représenter le chemin actuel.
    Bien qu'il existe désormais des IDE tels qu'Eclipse, certains programmes sont parfois compilés et exécutés manuellement. De nombreuses personnes, y compris des personnes ayant de nombreuses années d'expérience en développement, ne savent pas comment exécuter des classes avec des
    numéros sur la ligne de commande. Un peu décevant...
    Exemples d'utilisation :
    java -cp ..libhsqldb.jar org.hsqldb.Server -database mydb
    ou
    java -cp ../lib/hsqldb.jar org . hsqldb.Server -database.0 mabase de données -nombase.0 mabase de données

    répondre
    0
  • Annulerrépondre