Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Logback:如何仅将错误记录到文件中_Java_Logging_Slf4j_Logback - Fatal编程技术网

Java Logback:如何仅将错误记录到文件中

Java Logback:如何仅将错误记录到文件中,java,logging,slf4j,logback,Java,Logging,Slf4j,Logback,我已经阅读了两个小时的logback手册,仍然不知道如何做我需要的 它就像标题所说的那样简单:我只想将错误记录到文件中,而将其他级别(包括错误)记录到控制台中 这是我的logcat.xml文件的根部分: <root level="TRACE" > <appender-ref ref="CONSOLE_APPENDER" /> <appender-ref ref="FILE_APPENDER" /> </ro

我已经阅读了两个小时的logback手册,仍然不知道如何做我需要的

它就像标题所说的那样简单:我只想将错误记录到文件中,而将其他级别(包括错误)记录到控制台中

这是我的logcat.xml文件的根部分:

    <root level="TRACE" >
        <appender-ref ref="CONSOLE_APPENDER" />
        <appender-ref ref="FILE_APPENDER" />
    </root>
文件记录器如下所示:

LoggerFactory.getLogger(ClientClass.class);
LoggerFactory.getLogger("file_logger");
我不想为每个类选择记录器。我只想使用类作为参数从工厂获取根记录器,并让它根据级别执行正确的操作


这可能吗?

将其放入文件附加器定义中:

    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>

错误

ThresholdFilter
位于
logback classic.jar

我不明白为什么这里的错误答案是上浮的。 这家伙只想要文件中的错误信息

以下是正确答案:

<filter class="ch.qos.logback.classic.filter.LevelFilter">
  <level>ERROR</level>
  <onMatch>ACCEPT</onMatch>
  <onMismatch>DENY</onMismatch>
</filter>

错误
接受
否认
参考: 请参阅以下代码:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

信息
否认
接受
%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n

不错。我正在使用,似乎也很有效。这也有帮助;logback.xml的XSD。这可以帮助您配置变量。谢谢,你的方法奏效了。但是,这违背了
root
标记上的
level
属性的全部目的,因为这是它的主要功能-确定追加器的日志级别。这是因为解决方案UPPOUTED使用ThresholdFilter来过滤下面的所有错误。我理解这一点。我不明白它是如何解决作者所说的问题的。作者只想将错误记录到文件中。很好。我们其余的人都认为他想要“错误及以上”:)更新:在logback中,错误是最高级别的,不像log4j有“致命”的go图……我认为答案应该是相反的。接受和拒绝应该交换他们的位置这能回答你的问题吗?
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>