我现在的问题是,如果我想完全禁用FileAppender,我不知道怎么做。如果我向FileAppender添加一个DenyAllFilter,它将阻止任何内容写入文件,但文件仍然被创建。如果从根记录器中删除FileAppender,则将Log4J写入stderr:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
如果我将根级别设置为OFF,则我将自定义调试级别设置为仍然输出的各个记录器。
如果我将LoggerRepository级别设置为OFF,那么所有的记录器(那些我想转到STDOUT和文件中的记录器)都将关闭。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p %c{5} - %X{messageId} - %m%n" />
<!-- <param name="ConversionPattern" value="%m%n" /> -->
</layout>
</appender>
<appender name="LOGTXT" class="org.apache.log4j.FileAppender">
<param name="file" value="lss-client.log" />
<param name="append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p %c{5} - %X{messageId} - %m%n" />
</layout>
<!-- <filter class="org.apache.log4j.varia.DenyAllFilter"/> -->
</appender>
<!-- Spring Loggers -->
<logger name="org.springframework">
<level value="INFO" />
</logger>
<logger name="org.springframework.ws.client.MessageTracing.sent">
<level value="TRACE" />
</logger>
<logger name="org.springframework.ws.client.MessageTracing.received">
<level value="TRACE" />
</logger>
<logger name="com.cws.cs.Client" >
<level value="INFO" />
<appender-ref ref="STDOUT" />
</logger>
<root>
<level value="INFO" />
<appender-ref ref="LOGTXT" />
</root>
</log4j:configuration>
埃里克
可以肯定的是,当您配置fileappender
时,slf4j/log4j会立即创建日志文件。
我认为您在这里的最佳选择是拥有2个不同的完整的Log4J配置,并根据命令行参数选择在启动时加载哪一个。
在伪代码中:
public static void main(String[] args){
//if log to file arg = true
DOMConfigurator.configure("logToFile.log4j.xml");
//else
DOMConfigurator.configure("logToConsoleOnly.log4j.xml");
}
public static void main(String[] args){
DOMConfigurator.configure("log4j.xml");
//if log to file arg = true{
// Define layout
PatternLayout layout = new PatternLayout();
layout.setConversionPattern("%d{ISO8601} %-5p %c{5} - %X{messageId} - %m%n");
// Create appender
FileAppender appender = new FileAppender();
appender.setFile("lss-client.log");
appender.setLayout(layout);
appender.activateOptions();
// Get root logger and add appender.
log = Logger.getRootLogger();
log.setLevel(Level.INFO);
log.addAppender(appender);
}
}
问题内容: 我还找不到关于如何使用Log4j的XML样式配置文件配置Hibernate日志记录的任何文档。 这是否有可能,或者我是否使用属性样式配置文件来控制Hibernate的日志记录? 如果有人有任何信息或文档链接,我们将不胜感激。 编辑: 只是为了澄清,我正在寻找控制Hibernate的实际XML语法的示例。 EDIT2: 这是我的XML配置文件中的内容。 日志记录工作正常,但是我正在寻找一
我下载了kafka-clients-0.9.0.0。jar与maven一起使用,我希望我会看到类似于Kafka日志链接中的日志记录 然而,我不知道为什么我没有得到任何日志记录,即使我设置了引导。purpuse上的服务器错误,但它只是在没有发出任何警告的情况下被卡住了。我添加了几行代码以使用log4j打印到一个文件中,这似乎是可行的,但不知道为什么Kafka不能将事件记录到log4j中。 请注意,s
我刚刚在EC2 Ubuntu 14.04 LTS上安装了我的第一个uWSGI服务器,使用以下配置:
问题内容: 我有一些使用该软件包的工具化代码。现在该关闭日志记录了,我无法确定如何关闭标准记录器。 我错过了什么吗?我应该在进行日志调用之前检查标志,还是在生产中将其注释掉? 问题答案: 要完全禁用日志,最好调用Joril并将输出设置为无操作(例如) 但即使在此之后,操作仍将闲置约500-600 ns / op 1 这仍然可切断短路(左右 为100 ns / OP )通过使用自定义的实现,并实现所
我正在为日志创建一个Spring Bootjar。我在我的主要spring boot项目中添加了这个依赖项。我可以在主项目的控制台中获取日志。但是没有登录到文件中。 我在文件中添加了以下application.yml 谁能帮我一下吗。提前谢谢!
问题内容: 我不知道如何配置我的log4j,以便我的debugLog和reportLog彼此分开(不是附加的)。为什么在以下配置中,reportsLog始终为空? 这是我的Java代码: 问题答案: 尝试以下配置: 然后相应地用Java代码配置记录器: 你要输出到吗?如果不是,请将第一行更改为: 并摆脱界限。