Logback Groovy配置缓慢

时间:2014-11-28 07:23:51

标签: java logging groovy configuration logback

我一直在使用Logback Groovy配置,现在我发现它是启动速度很慢的原因。一个HelloWorld"应用程序"需要大约一秒钟。我没有注意到Web服务器环境中的减速,但现在我经常需要运行一些相当简单的工具,这是不可接受的。

Q1:我仍然无法相信,因为我的配置文件很小而且一秒钟很大,所以有人可以确认吗?

我可以想象,除了一部分回到XML之外,可以轻松地重写所有内容。有问题的部分是我自己的过滤器和它的两个方法,如

public class MyLogbackFilter extends Filter<ILoggingEvent> {
    public MyLogbackFilter accept(String prefix, Level level) {...}
    public MyLogbackFilter accept(String prefix, Level level) {...}
   ...
}

通过类似

的配置
filter = new MyLogbackFilter()
    .accept("com.example.pck1.Class1", TRACE)
    .accept("com.example.pck1.Class2", TRACE)
    .deny("com.example.pck1", TRACE)
    .accept("", WARNING)
    .deny("", INFO);

自上而下评估规则,例如,无论以后指定的内容如何,​​com.example.pck1.Class1TRACE或更高级别的所有内容都会被接受。

Q2:我可以以某种方式让logback读取像

这样的配置文件
A com.example.pck1.Class1 TRACE
A com.example.pck1.Class2 TRACE
D com.example.pck1 TRACE
A * WARNING
D * INFO

并把它喂给我的班级?然后解释是花生。

1 个答案:

答案 0 :(得分:0)

真诚地,我永远不知道你可以按类编写,但是你可以只为你的项目添加一个xml配置文件,并且logback库试图在类路径中找到xml(通常,在maven你把xml放入资源文件)。

文件可以是这样的:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>/usr/java/logs/floresTrace.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>/path/to/file/myfile.%i.log.zip</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>3</maxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>1MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
          <pattern>%d{YYYY-MM-dd HH:mm:ss} %level [%thread] %logger{10} [%file:%line]   %msg%n</pattern>
       </encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>
<!-- you can, however add loggers by package here-->
<logger name="your.package.one" level="DEBUG"/>
<logger name="your.package.two" level="INFO"/>

<root level="debug">
   <appender-ref ref="FILE" />
   <appender-ref ref="STDOUT" />
</root>
</configuration>

因此,正如评论所说,您可以按包添加记录器。希望这有帮助。