我一直在尝试为我在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,文件已创建,但没有附加任何内容。
你能告诉我我错过了什么或做错了吗?
答案 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>