Java 找不到log4j siftAppender输出日志
我跟着这个 我有这段代码,但没有写日志文件 我错过了什么 这是我的: log4j.propertiesJava 找不到log4j siftAppender输出日志,java,logging,log4j,sift,sifting-appender,Java,Logging,Log4j,Sift,Sifting Appender,我跟着这个 我有这段代码,但没有写日志文件 我错过了什么 这是我的: log4j.properties log4j.rootLogger=INFO, sift, osgi:VmLogAppender # Sift appender log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender log4j.appender.sift.key=session_id log4j.appender.sift.default=no_se
log4j.rootLogger=INFO, sift, osgi:VmLogAppender
# Sift appender
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.key=session_id
log4j.appender.sift.default=no_session_id
log4j.appender.sift.appender=org.apache.log4j.FileAppender
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n
log4j.appender.sift.appender.file=$\\{session_id\\}.log
log4j.appender.sift.appender.append=true
我希望看到两个输出日志文件:MyGooApp.log
和MyFooApp.log
。然而,我在任何地方都找不到它们
更新
我试过这个:
log4j.appender.sift.appender.file=./$\\{session_id\\}.log
现在我看到了输出文件:
我已经用logback完成了。我现在与你分享 SiftExample.java logback.xml MyFooApp.log
2016-05-09 01:35:57 - Alice says hello
2016-05-09 01:35:57 - Bob says hi
注:请不要忘记这样做
chapters.appenders.sift
作为添加到logback.xml中,似乎您正在使用相对路径作为文件名(log4j.appender.sift.appender.file=$\{session\u id\\\}.log
)
如果将log4j的日志级别设置为debug,则应在生成的日志中看到如下语句:
setFile called: "+fileName+"
您可以通过定义log4j.configDebug变量来启用log4j内部日志记录。所有log4j内部调试调用都转到System.out,其中as内部错误消息被发送到System.err。所有内部消息都以字符串“log4j:”开头
作为测试,您还可以将文件属性更改为以下内容:
log4j.appender.sift.appender.file=./$\\{session_id\\}.log
表示当前文件夹(通常是项目根文件夹)。这里有多个问题
首先将log4j.properties从项目根目录移动到“src/resources
”。然后,您将看到一个相关错误的世界
log4jjar没有这个包org.apache.Log4j.sift
,请将支持pax的日志jar添加到您的类路径中
它还将有助于使用Karaf OSGi MDC或Camel MDC,因为ApacheKaraf使用Pax日志作为日志系统。(但我不确定没有OSGi它将如何工作)
您的问题不在于这一行log4j.appender.sift.appender.file=./$\{session\u id\\}.log
,只要路径是/$\{session\u id\\}.log
在正确配置所有其他内容后,应在项目根目录中创建日志文件。我必须使用log4j,因为我要附加到现有的生产代码,我只想添加到现有配置中“log4j内部日志记录”这意味着什么?它用于什么?定义log4j.configDebug变量
将其设置为什么值?定义键log4j.configDebug
应该已经足以启用日志记录(请参阅log4j codeLogLog
),但我想如果将该值设置为true,则不会有什么影响。定义此值会使log4j将log4j内部调试语句打印到System.out。我已经在属性文件中添加了log4j.configDebug=true
,但它没有帮助您是否在日志中看到一个以setFile开头的条目,名为:
?为什么log4j jar没有这个包org.apache.log4j.sift
,请看本教程,它不建议将pax日志jar添加到类路径中。
tutorial:您可以自己分解jar文件并查看该包是否存在。其次,该教程确实说,让我们看看Fuse-ESB最新发行版的org.ops4j.pax.logging.cfg,它目前是4.4.1-Fuse-03-06。
这意味着它正在使用Karaf,我已经建议过了。该教程还提到了“org.ops4j.pax.logging.cfg文件”,您认为这是从哪里来的。
2016-05-09 01:35:57 - Bob says hi
setFile called: "+fileName+"
log4j.appender.sift.appender.file=./$\\{session_id\\}.log