Java 如何以编程方式禁用控制台的Logback输出,但附加到文件
我以编程方式设置了Logback文件appender,并将日志级别设置为Java 如何以编程方式禁用控制台的Logback输出,但附加到文件,java,logging,logback,Java,Logging,Logback,我以编程方式设置了Logback文件appender,并将日志级别设置为ALL。 原因是设置日志级别ALL我希望日志文件包含所有日志详细信息,如(信息、调试、警告等),但我希望避免从控制台获取这些详细信息。如果有人知道,请让我知道如何以编程方式禁用控制台的回写输出 记录器代码片段 专用静态记录器createLoggerFor(字符串、字符串文件){ LoggerContext lc=(LoggerContext)LoggerFactory.getILoggerFactory(); Patter
ALL
。
原因是设置日志级别ALL
我希望日志文件包含所有日志详细信息,如(信息、调试、警告等)
,但我希望避免从控制台获取这些详细信息。如果有人知道,请让我知道如何以编程方式禁用控制台的回写输出
记录器代码片段
专用静态记录器createLoggerFor(字符串、字符串文件){
LoggerContext lc=(LoggerContext)LoggerFactory.getILoggerFactory();
PatternLayoutCoder ple=新的PatternLayoutCoder();
setPattern(“%date%级别[%thread]%logger{10}[%file:%line]%msg%n”);
ple.setContext(lc);
ple.start();
FileAppender FileAppender=新FileAppender();
fileAppender.setFile(文件);
fileAppender.setEncoder(ple);
setContext(lc);
fileAppender.start();
Logger Logger=(Logger)LoggerFactory.getLogger(字符串);
logger.addAppender(fileAppender);
logger.setLevel(Level.ALL);
logger.setadditional(false);/*如果root也应该记录,则设置为true*/
返回记录器;
}
注意:当我设置日志级别时,警告
或调试
详细信息不会显示在日志文件中,也不会显示在控制台输出中。但我想将所有详细信息都记录到日志文件中,包括信息
,这对我很有效
logger.setAdditivity(false);
这对我有用
logger.setAdditivity(false);
从文档中:
假设配置文件logback-test.xml或logback.xml为
不存在,logback将默认调用BasicConfiguration
将设置最小配置。这是最小的配置
由连接到根记录器的ConsolePender组成
如果要禁用所有控制台输出,应尝试删除默认的ConsolePender。根据,这个appender的名字是“console”。因此,您可以尝试(未经测试):
我强烈建议将这些编程配置移动到logback.xml文件中,并且仅在必要时以编程方式更改配置。在我看来,配置文件更明确,更易于管理。来自文档:
假设配置文件logback-test.xml或logback.xml为
不存在,logback将默认调用BasicConfiguration
将设置最小配置。这是最小的配置
由连接到根记录器的ConsolePender组成
如果要禁用所有控制台输出,应尝试删除默认的ConsolePender。根据,这个appender的名字是“console”。因此,您可以尝试(未经测试):
我强烈建议将这些编程配置移动到logback.xml文件中,并且仅在必要时以编程方式更改配置。在我看来,配置文件更明确,也更易于管理。您可以通过从您的logback配置中删除
ConsoleAppender来实现这一点
日志恢复配置如下所示
<configuration>
<appender name="logFileAppender" class="ch.qos.logback.core.FileAppender">
<file>c:/logs/serverlog.log</file>
<append>true</append>
<encoder>
<pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="logFileAppender" />
</root>
</configuration>
c:/logs/serverlog.log
符合事实的
%d[%thread]-5级别%logger{35}-%msg%n
您可以通过从您的logback配置中删除ConsoleAppender来完成此操作
日志恢复配置如下所示
<configuration>
<appender name="logFileAppender" class="ch.qos.logback.core.FileAppender">
<file>c:/logs/serverlog.log</file>
<append>true</append>
<encoder>
<pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="logFileAppender" />
</root>
</configuration>
c:/logs/serverlog.log
符合事实的
%d[%thread]-5级别%logger{35}-%msg%n
这不起作用。作为临时解决方案,我在项目中添加了一个虚拟lockback.xml
文件,并覆盖默认行为。我的logback xml只包含以下xml标记:
这不是一种优雅的方式,但它成功了。这不起作用。作为临时解决方案,我添加了一个虚拟lockback.xml
文件到我的项目中并覆盖默认行为。我的logback xml只包含以下xml标记:
,这不是一种优雅的方式,但它做到了。我不确定上述内容是否正确,或者在给出答案后是否有变,但我今天遇到了这个问题,至少从logback版本1.2.3开始,正确的形式是logger.setaddition(false)
(这对我来说也很有效)我不确定上述内容是否正确,或者在给出答案后是否发生了变化,但我今天遇到了这种情况,至少在Logback版本1.2.3中,正确的形式是logger.setaddition(false)代码>(对我来说也很有效)