当前位置: 首页 > 面试题库 >

如何使log4j也写入控制台

范鸿畅
2023-03-14
问题内容

有什么办法告诉log4j将其日志写入文件和控制台?谢谢,有我的财产:

log4j.rootLogger=DEBUG,console,R
log4j.rootLogger=INFO, FILE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log4j.log
log4j.appender.FILE.MaxFileSize=512KB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

问题答案:

您的root记录器定义有点混乱。请参阅log4j文档。

这是标准的Java属性文件,这意味着将行视为键=值对。您的第二log4j.rootLogger行覆盖了第一行,这说明了为什么在console附加程序上看不到任何内容。

您需要将两个rootLogger定义合并为一个。您似乎想让DEBUG消息进入控制台,INFO消息进入文件。根记录器只能具有 一个
级别,因此您需要更改配置,以便附加程序具有适当的级别。

虽然我没有验证这是正确的,但我猜它看起来像这样:

log4j.rootLogger=DEBUG,console,file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender

请注意,您在机壳中也有一个错误-一个地方是控制台小写,另一个地方是CAPS。



 类似资料:
  • 所以我有一个Laravel控制器: 目前,我正在使用artisan(在引擎盖下运行PHP的内置开发Web服务器)运行应用程序: 我想将控制台消息记录到artisan进程的管道中。

  • 问题内容: 是否可以写字符串或登录控制台? 我的意思是说 就像在JSP中一样,如果我们打印,则它将在控制台而不是页面上。 问题答案: 火狐浏览器 在Firefox上,您可以使用名为FirePHP的扩展程序,该扩展程序可以将信息从PHP应用程序记录和转储到控制台。这是很棒的Web开发扩展Firebug的附加组件。 http://www.studytrails.com/blog/using-firep

  • 问题内容: 我想知道如何将以下代码转换为将这些行输出到文本文件,而不是标准输出: 该属性文件是: 谢谢。 问题答案: 将ConsoleAppender更改为FileAppender。 我发现 有用。如果使用此选项,则必须为fileName添加一个属性,并且可能还要设置maxFileSize。这是一个示例(将它们放在log4j.properties文件中): 还有其他附加程序。 根据时间滚动。 不滚

  • 问题内容: 在阅读有关Java I / O的知识时,我意识到可以通过两种方式写入标准输出。 以下是同时使用这两种技术的代码段 相对于其他使用,是否有任何性能优势? 问题答案: 一个快速的Google透露了Coderanch上的一个线程很有用。 还有其他几种进行控制台编写的方法,但是除了编写更少的代码外,使用一种或另一种似乎没有真正的好处,而且创建新的PrintWriter对象最终会占用更多的内存。

  • 问题内容: 我已尝试使用此代码建议(http://www.daniweb.com/forums/thread23883.html#)将控制台输出写入txt文件,但未成功。怎么了? 问题答案: 你需要执行以下操作: 第二句话是关键。它将假定的“最终” 属性的值更改为提供的值。 可以使用类似的方法(和)来更改标准输入和错误流。有关详细信息,请参考。 上面的一个更通用的版本是这样的: 如果为is ,则流

  • 问题内容: 我是python的新手,正在编写一些脚本来自动从FTP服务器等下载文件。我想显示下载进度,但是我希望它保持不变,例如: 输出: 正在下载文件FooFile.txt [47%] 我正在尝试避免这样的事情: 我应该怎么做呢? 复制 : 如何在命令行应用程序的当前行上打印? 问题答案: 您还可以使用回车符: