使用logback.xml配置来实现日志文件输出

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

logback.xml配置如下:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!--从高到地低OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL-->
  3. <!--日志输出规则根据当前ROOT级别,日志输出时,级别高于root默认的级别时会输出-->
  4. <!--以下每个配置的filter是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter过滤只记录本级别的日志-->
  5. <!--属性描述scan:性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为truescanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  6. debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。-->
  7. <configurationscan="true"scanPeriod="60seconds"debug="false">
  8. <!--定义日志文件输入位置-->
  9. <propertyname="log_dir"value="/logs/ev_cmdb"/>
  10. <!--日志最大的历史30天-->
  11. <propertyname="maxHistory"value="30"/>
  12. <!--ConsoleAppender控制台输出日志-->
  13. <appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">
  14. <!--对日志进行格式化-->
  15. <encoder>
  16. <pattern>%d{yyyy-MM-ddHH:mm:ss}[%thread]%-5level%logger-%msg%n</pattern>
  17. </encoder>
  18. </appender>
  19. <!--ERROR级别日志-->
  20. <!--滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件RollingFileAppender-->
  21. <appendername="ERROR"class="ch.qos.logback.core.rolling.RollingFileAppender">
  22. <!--过滤器,只记录WARN级别的日志-->
  23. <filterclass="ch.qos.logback.classic.filter.LevelFilter">
  24. <level>ERROR</level>
  25. <onMatch>ACCEPT</onMatch>
  26. <onMismatch>DENY</onMismatch>
  27. </filter>
  28. <!--最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动-->
  29. <rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  30. <!--日志输出位置可相对、和绝对路径-->
  31. <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/error-log.log</fileNamePattern>
  32. <!--可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6,
  33. 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除--<maxHistory>${maxHistory}</maxHistory>
  34. </rollingPolicy>
  35. <!--按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。
  36. <rollingPolicyclass="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
  37. <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern>
  38. <minIndex>1</minIndex>
  39. <maxIndex>3</maxIndex>
  40. </rollingPolicy>-->
  41. <!--查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender触发当前活动文件滚动
  42. <triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  43. <maxFileSize>5MB</maxFileSize>
  44. </triggeringPolicy>-->
  45. <pattern>%d{yyyy-MM-ddHH:mm:ss.SSS}[%thread]%-5level%logger-%msg%n</pattern>
  46. <!--WARN级别日志appender-->
  47. <appendername="WARN"class="ch.qos.logback.core.rolling.RollingFileAppender">
  48. <level>WARN</level>
  49. <!--按天回滚daily-->
  50. <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/warn-log.log
  51. </fileNamePattern>
  52. <!--日志最大的历史60天-->
  53. <!--INFO级别日志appender-->
  54. <appendername="INFO"class="ch.qos.logback.core.rolling.RollingFileAppender">
  55. <!--过滤器,只记录INFO级别的日志-->
  56. <level>INFO</level>
  57. <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/info-log.log
  58. <!--DEBUG级别日志appender-->
  59. <appendername="DEBUG"class="ch.qos.logback.core.rolling.RollingFileAppender">
  60. <!--过滤器,只记录DEBUG级别的日志-->
  61. <level>DEBUG</level>
  62. <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/debug-log.log
  63. <!--TRACE级别日志appender-->
  64. <appendername="TRACE"class="ch.qos.logback.core.rolling.RollingFileAppender">
  65. <!--过滤器,只记录ERROR级别的日志-->
  66. <level>TRACE</level>
  67. <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/trace-log.log
  68. <loggername="java.sql.PreparedStatement"value="DEBUG"/>
  69. <loggername="java.sql.Connection"value="DEBUG"/>
  70. <loggername="java.sql.Statement"value="DEBUG"/>
  71. <loggername="com.ibatis"value="DEBUG"/>
  72. <loggername="com.ibatis.common.jdbc.SimpleDataSource"value="DEBUG"/>
  73. <loggername="com.ibatis.common.jdbc.ScriptRunner"level="DEBUG"/>
  74. <loggername="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"value="DEBUG"/>
  75. <!--root级别DEBUG-->
  76. <rootlevel="debug">
  77. <!--控制台输出-->
  78. <appender-refref="STDOUT"/>
  79. <!--文件输出-->
  80. <appender-refref="ERROR"/>
  81. <appender-refref="INFO"/>
  82. <appender-refref="WARN"/>
  83. <appender-refref="DEBUG"/>
  84. <appender-refref="TRACE"/>
  85. </root>
  86. </configuration>

LogUtils.java

    packagelog.base;
  1. packagecom.ghca.easyview.server.common.utils;
  2. importorg.slf4j.Logger;
  3. importorg.slf4j.LoggerFactory;
  4. publicclassLogUtils{
  5. /**
  6. *错误输入日志
  7. */
  8. publicstaticfinalLoggerlog=LoggerFactory.getLogger(LogUtils.class);
  9. *记录一直info信息
  10. *
  11. *@parammessage
  12. publicstaticvoidlogInfo(Stringmessage){
  13. StringBuilders=newStringBuilder();
  14. s.append((message));
  15. log.info(s.toString());
  16. }
  17. publicstaticvoidlogInfo(Stringmessage,Throwablee){
  18. s.append(("exception:-->>"));
  19. log.info(s.toString(),e);
  20. publicstaticvoidlogWarn(Stringmessage){
  21. log.warn(s.toString());
  22. publicstaticvoidlogWarn(Stringmessage,248)"> log.warn(s.toString(),153); font-weight:bold; background-color:inherit">publicstaticvoidlogDebug(Stringmessage){
  23. log.debug(s.toString());
  24. publicstaticvoidlogDebug(Stringmessage,248)"> log.debug(s.toString(),153); font-weight:bold; background-color:inherit">publicstaticvoidlogError(Stringmessage){
  25. s.append(message);
  26. log.error(s.toString());
  27. *记录日志错误信息
  28. *@parame
  29. publicstaticvoidlogError(Stringmessage,248)"> log.error(s.toString(),248)"> }

TEST

packagecom.ghca.easyview.server.log.test;
  • importjava.io.File;
  • importjava.io.IOException;
  • importorg.junit.Before;
  • importorg.junit.Test;
  • importch.qos.logback.core.joran.spi.JoranException;
  • importcom.ghca.easyview.server.common.utils.LogBackConfigLoader;
  • importcom.ghca.easyview.server.common.utils.LogUtils;
  • importcom.ghca.easyview.server.config.ServerConfig;
  • publicclassTestLog{
  • @Before
  • publicvoidbefore(){
  • Filefile=newFile(System.getProperty("user.dir"));
  • Stringpath=file.getPath()+File.separator+"conf";
  • //将主要配置文件路径赋值给ServerConfig.configPath属性
  • ServerConfig.config_path=path;
  • try{
  • //加载日志文件
  • LogBackConfigLoader.load(ServerConfig
  • .loadLogBackConfPath("logback.xml"));
  • }catch(IOException|JoranExceptione){
  • e.printStackTrace();
  • @Test
  • publicvoidtest1(){
  • LogUtils.logInfo("INFO~");
  • LogUtils.logDebug("DEBUG~");
  • LogUtils.logError("ERROR~");
  • LogUtils.logWarn("WARN~");
  • 根据日志级别输出不等的日志信息,

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

  • 相关推荐


    php输出xml格式字符串
    J2ME Mobile 3D入门教程系列文章之一
    XML轻松学习手册
    XML入门的常见问题(一)
    XML入门的常见问题(三)
    XML轻松学习手册(2)XML概念
    xml文件介绍及使用
    xml编程(一)-xml语法
    XML文件结构和基本语法
    第2章 包装类
    XML入门的常见问题(二)
    Java对象的强、软、弱和虚引用
    JS解析XML文件和XML字符串详解
    java中枚举的详细使用介绍
    了解Xml格式
    XML入门的常见问题(四)
    深入SQLite多线程的使用总结详解
    PlayFramework完整实现一个APP(一)
    XML和YAML的使用方法
    XML轻松学习总节篇