我还在学习log4j,我面临这个问题。
在我当前的示例中,我无法在日志文件中打印 System.out.println 语句。
我已经浏览了 Stack Overflow 中的其他问题和答案,这是一个重复的问题,但我仍然不明白。
下面是Java类
public class Testing
{
private final static Logger logger = Logger.getLogger(Testing.class);
static
{
PropertyConfigurator.configure("log4j.properties");
}
public static void main(String args[])
{
System.out.println("Entered main method...............");
logger.error("An error has occurred might");
}
}
log4j.properties 文件:
log4j.rootLogger=DEBUG, file, console
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/justfortesting.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.FILE.filter.b=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.FILE.filter.b.LevelToMatch=ERROR
log4j.appender.FILE.filter.b.AcceptOnMatch=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n
log4j.logger.com.log4j=DEBUG, file, console
log4j.additivity.com.log4j=false
所以有人建议,我需要对此进行哪些更改/添加新内容?
最佳答案
通过修改我的 Testing 类并使用现有代码添加一个新类,我得到了上述问题的解决方案。
public class Testing
{
private final static Logger logger = Logger.getLogger(Testing.class);
static
{
PropertyConfigurator.configure("log4j.properties");
}
public static void main(String args[])
{
Logger out = Logger.getLogger("SystemOut");
Level info = Level.INFO;
System.setOut(new PrintStream(new LoggingOutputStream(out, info),true));
System.out.println("Entered main method...............");
System.out.println("Printing 2nd...............");
}
}
已添加LoggingOutputStream用于在日志文件中打印 System.out.println 语句的类。
关于java - 使用log4j如何在日志文件中打印System.out.println语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178441/