无法在GlassFish 3.1.2.2中更改文件日志格式

时间:2014-03-30 19:12:39

标签: logging glassfish slf4j formatter

我一直在尝试为我在GlassFish 3.1.2.2上部署的应用程序设置日志记录。首先,我已经阅读了一些教程如何配置SLF4J并将其应用到我的应用程序和GF。我发现that one非常有用,因为日志开始工作。然而,Glassfish存储日志的方式对我来说非常烦人。我找到了一些答案(this post似乎是令人满意的答案)但不幸的是我遇到了一些我无法解决的问题。我编写了自己的格式化程序并将其放入Glassfish中,就像上面的帖子一样,它只能部分工作。 当我在NetBeans控制台中看到日志时,它们看起来像我希望它们看起来的样式:

INFO: 2014-03-30 20:48:51,768 INFO  p.e.a.w.kino.rk.rest.SessionService - User (admin) has successfully logged out

但是,在server.log文件中,它们仍然具有GlassFish格式

[#|2014-03-30 20:48:51.769|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=93;_ThreadName=Thread-2;|2014-03-30 20:48:51,768 INFO  p.e.a.w.kino.rk.rest.SessionService - User (admin) has successfully logged out.
|#]

我创建了两个带有日志属性的文件,因为它是在第一个链接中建议的,所以我附加了这两个文件: 的 _logging.properties

handlers = org.slf4j.bridge.SLF4JBridgeHandler
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency=1
com.sun.enterprise.server.logging.GFFileHandler.file=${com.sun.aas.instanceRoot}/logs/server.log
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=false
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=2000000
com.sun.enterprise.server.logging.GFFileHandler.alarms=false
com.sun.enterprise.server.logging.GFFileHandler.formatter=pl.edu.amu.wmi.kino.rk.utils.ReportKeeperLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0
com.sun.enterprise.server.logging.GFFileHandler.level=ALL
java.util.logging.FileHandler.formatter=pl.edu.amu.wmi.kino.rk.utils.ReportKeeperLogFormatter

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  <layout class="ch.qos.logback.classic.PatternLayout">
   <Pattern>%d %-5level %logger{36} - %msg%n</Pattern>
  </layout>
 </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">        
    <file>${com.sun.aas.instanceRoot}/logs/server.log</file>        
    <encoder>
        <pattern>%date %level [%file:%line] %msg%n</pattern>
    </encoder>
    </appender>

 <logger name="com.sido">
  <level value="debug" />
 </logger>

 <logger name="org.springframework">
  <level value="debug" />
 </logger>

 <root>
  <level value="debug" />
  <appender-ref ref="console" />
 </root>
</configuration>

在其他一些网站上,我在logback.xml中发现了另一个appender,但它没有用。

更新我更改了文件&#34; FILE&#34; logback.xml中的appender到某个其他文件,即temp_server.log,文件已创建,但没有附加任何内容。

你能告诉我我错过了什么或做错了吗?

1 个答案:

答案 0 :(得分:0)

我今天找到了解决方案。我没有准确地阅读如何处理文件追加器。现在一切都还好,所以我发布我的解决方案 - 更改了logback.xml。现在它支持文件滚动策略并以我想要的方式保存日志。

<强> logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  <layout class="ch.qos.logback.classic.PatternLayout">
   <Pattern>%d %-5level %logger{36} - %msg%n</Pattern>
  </layout>
 </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${com.sun.aas.instanceRoot}/logs/rk_log.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${com.sun.aas.instanceRoot}/logs/rk_log_%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%date{YYYY-MM-dd HH:mm:ss} %-5level %logger{35} - %msg%n</Pattern>
        </layout>
    </appender>

 <root level="INFO">
    <appender-ref ref="FILE"/>
 </root>   

 <logger name="com.sido">
  <level value="debug" />
 </logger>

 <logger name="org.springframework">
  <level value="debug" />
 </logger>

 <root>
  <level value="debug" />
  <appender-ref ref="console" />
 </root>
</configuration>