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
在何处保存logback.xml文件以供Java中的记录器slf4j使用_Java_Logging_Logback - Fatal编程技术网

在何处保存logback.xml文件以供Java中的记录器slf4j使用

在何处保存logback.xml文件以供Java中的记录器slf4j使用,java,logging,logback,Java,Logging,Logback,我有一个问题,关于我应该保存logback.xml文件的位置,以便我的程序可以找到它。我现在将它保存在src/main/resources中,但它找不到它。从那以后我就知道了 String URL = "logback.xml"; System.out.println(ClassLoader.getSystemResource(URL)); 返回null 记录器可以工作,但会将所有信息打印到命令行 null 13:05:26.606 [main] DEBUG o.j.f.c.m

我有一个问题,关于我应该保存logback.xml文件的位置,以便我的程序可以找到它。我现在将它保存在src/main/resources中,但它找不到它。从那以后我就知道了

    String URL = "logback.xml";
    System.out.println(ClassLoader.getSystemResource(URL));
返回
null

记录器可以工作,但会将所有信息打印到命令行

null
13:05:26.606 [main] DEBUG o.j.f.c.master.AbstractMaster - Number of columns: 18
13:05:26.613 [main] DEBUG o.j.f.c.master.AbstractMaster - Objective value: 479.0
13:05:26.666 [main] DEBUG o.j.f.c.master.AbstractMaster - Number of columns: 113
13:05:26.668 [main] DEBUG o.j.f.c.master.AbstractMaster - Objective value: 272.0
13:05:26.693 [main] DEBUG o.j.f.c.master.AbstractMaster - Number of columns: 118
13:05:26.694 [main] DEBUG o.j.f.c.master.AbstractMaster - Objective value: 238.0
13:05:26.721 [main] INFO  o.j.f.c.master.AbstractMaster - Best objective value found: 238.0
13:05:26.721 [main] INFO  o.j.f.c.master.AbstractMaster - (d1-s2-s2-d1) (s2-c1-s2) (s2-c3-c2- 
s2);238.0 chosen with value: 1.0 resulting in cost: 238.0
我的logback.xml文件的内容是

<configuration scan="true" info="true">
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <file>myApp.log</file>
  <append>false</append>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%msg%n</pattern>
    </layout>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

  <logger name="algorithms.MultiLabel.cg.master" level="OFF"/>

  <root level="debug"> <!-- levels: OFF, info, debug -->
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>
  • 为什么现在它会在文件夹./target(src文件夹也位于其中)中找到该文件,即使我没有将其保存在那里
  • 它正在打印的所有信息都来自主程序包,我将其设置为“关闭”,那么它为什么仍在打印它呢

我期待任何建议/解释

所有类都被编译到目标文件夹中,资源也被复制到那里。因此,在您最初创建logback.xml之后,可能没有适当地构建项目。当您进行更改时,您的IDE可能已经重建了项目并在/target文件夹中复制了相同的文件。关于第二个问题,我看不到主程序包中的任何日志行。并非所有的日志记录者都会有不达标,因为主程序包中有一个类调用。@Nenad关于第一个问题,谢谢你的解释,我现在明白了。关于第二个问题。如果您查看第一个输出,您可以看到“Best objective…”和“(d1-s2-…”在主文件中处于信息级别。在最后一个代码屏幕中,您可以看到我将ROOT设置为INFO,但将[algorithms]设置为OFF。因为我只在[algorithms]中实现了记录器我希望不会打印输出,但事实并非如此,正如您在代码块的最后两行中所看到的。如何正确指定给定包的级别?对不起,我没有注意到最后两行属于主包。看起来您使用了正确的方法为t中的所有记录器指定非级别主程序包。是否可能缺少程序包名称(algorithms.MultiLabel.cg.master是正确的程序包?)。
file:./target/classes/logback.xml
13:06:41,631 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
13:06:41,631 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
13:06:41,632 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:./target/classes/logback.xml]
13:06:41,715 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
13:06:41,720 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[.\target\classes\logback.xml]] every 60 seconds. 
13:06:41,720 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
13:06:41,731 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.FileAppender]
13:06:41,733 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE]
13:06:41,783 |-WARN in ch.qos.logback.core.FileAppender[FILE] - This appender no longer admits a layout as a sub-component, set an encoder instead.
13:06:41,783 |-WARN in ch.qos.logback.core.FileAppender[FILE] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
13:06:41,783 |-WARN in ch.qos.logback.core.FileAppender[FILE] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
13:06:41,783 |-INFO in ch.qos.logback.core.FileAppender[FILE] - File property is set to [myApp.log]
13:06:41,787 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
13:06:41,789 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
13:06:41,790 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
13:06:41,797 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [algorithms] to OFF
13:06:41,797 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
13:06:41,797 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to Logger[ROOT]
13:06:41,798 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
13:06:41,798 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
13:06:41,800 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@36f6e879 - Registering current configuration as safe fallback point

Best objective value found: 238.0
(d1-s2-s2-d1) (s2-c1-s2) (s2-c3-c2-s2);238.0 chosen with value: 1.0 resulting in cost: 238.0