当前位置: 代码迷 >> Java Web开发 >> 帮看上logback有关问题,日志输出到文件
  详细解决方案

帮看上logback有关问题,日志输出到文件

热度:9338   发布时间:2013-02-25 21:16:34.0
帮看下logback问题,日志输出到文件。
logback配置如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<substitutionProperty name="log.mycomm" value="../logs/mycomm" />
<jmxConfigurator />
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%date %-5level %logger{80} - %msg%n</pattern>
</layout>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${log.mycomm}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.mycomm}.%d{yyyy-MM-dd}.log.zip</FileNamePattern>
<!--日志保存天数-->
<maxHistory>100</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</layout>
<!--日志文件最大的大小 默认就是10M-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="WARN" />  
  <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="WARN"/>  
  <logger name="org.hibernate.SQL" level="WARN" />  
  <logger name="org.hibernate.engine.QueryParameters" level="WARN" />  
  <logger name="org.hibernate.engine.query.HQLQueryPlan" level="WARN" />  
<root level="INFO">
<appender-ref ref="stdout" />
<appender-ref ref="logfile" />
</root>
</configuration>

我测试了下,比如在类中写一个
int a = Integer.parseInt("sd");
那么会报:java.lang.NumberFormatException: For input string: "sd"这个异常,为什么这个异常控制台会显示,但输出的日志文件中缺没有,但日志中有logger.info输出的信息。

------解决方案--------------------------------------------------------
你可能输入了空格,如果没有的话应该是在你的配置文件中配置了空格,删掉就行了
------解决方案--------------------------------------------------------
你没有给控制台定义文件输出啊。。。

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%date %-5level %logger{80} - %msg%n</pattern>
</layout>
</appender>

这个不是你写的控制台定义吗。。

控制台输出和日志输出是两个概念
------解决方案--------------------------------------------------------
把log打印类型改为FILE,应该可以吧
  相关解决方案