我很难让log4j与我的小maven项目一起工作。在Eclipse中运行程序不会产生任何错误,并且日志记录工作正常。 但是,当我将项目打包到jar中时,我收到以下警告:
log4j:WARN No appenders could be found for logger (org.openrdf.sail.memory.MemoryStore).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j.properties文件打包到我的jar中,它位于项目的src / main / resources中。我阅读了this帖子和log4j网站的配置部分,但无法弄清楚。我上传了我的POM here。 我很感谢任何可以帮助我解决问题的提示。
答案 0 :(得分:1)
在<resource>
标记下添加<build></build>
标记。通过这样做,我们说如果不采用默认构建,则从指定路径获取资源。
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
答案 1 :(得分:1)
正如警告消息所示,它无法找到记录器org.openrdf.sail.memory.MemoryStore
的附加程序。因此,请确保log4j.properties
中确实有src/main/resources
个文件,然后确保将其打包到jar
中。也许出于某种原因,我真的看不到,它没有打包。你知道,狗屎有时会发生......如果在jar
中有这样的文件,请确保最后配置处理org.openrdf.sail.memory.MemoryStore
记录器的appender。
检查此log4j配置是否有效的最简单方法可能是为log4j.rootLogger
设置默认控制台appender。做它并写下那里发生的事情。
答案 2 :(得分:0)
你似乎用你的依赖项组装你的jar。如果这些罐子还包含log4j.properties,并且在覆盖你的罐子时被捡起,这可能会导致问题。因此,它找不到类org.openrdf.sail.memory.MemoryStore
的记录器。
只使用一个记录器文件,其中包含jar的日志信息以及所有依赖项。这只是复制和粘贴的问题。它还能够控制依赖类的日志记录级别。
答案 3 :(得分:0)
请注意,log4j.properties是个案敏感的;