1. <dependency>
  2. <groupId>log4j</groupId>
  3. <artifactId>log4j</artifactId>
  4. <version>1.2.17</version>
  5. </dependency>
  1. <dependency>
  2. <groupId>ch.qos.logback</groupId>
  3. <artifactId>logback-core</artifactId>
  4. <version>1.1.3</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>ch.qos.logback</groupId>
  8. <artifactId>logback-classic</artifactId>
  9. <version>1.1.3</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>ch.qos.logback</groupId>
  13. <artifactId>logback-access</artifactId>
  14. <version>1.1.3</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.logback-extensions</groupId>
  18. <artifactId>logback-ext-spring</artifactId>
  19. <version>0.1.2</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.slf4j</groupId>
  23. <artifactId>jcl-over-slf4j</artifactId>
  24. <version>1.7.12</version>
  25. </dependency>
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="SYS_LOG_DIR" value="d:/WEBLOAN" />
  4. <property name="LOG_FILE" value="webloan.log" />
  5. <property name="fileLayoutPattern"
  6. value="%-20(%d{yyyyMMdd_HH:mm:ss.SSS} [%logger{10}][%thread] [%-4relative])
  7. [%X{hostName} %X{requestId} %X{processId} %X{service.timing} ][%level] %msg%n" />
  8. <property name="consoleLayoutPattern"
  9. value="%-20(%d{yyyyMMdd_HH:mm:ss.SSS} [%logger][%thread] [%-4relative])
  10. [%X{hostName} %X{requestId} %X{processId} %X{service.timing} ][%level] %msg%n" />
  11.  
  12. <appender name="LOG_ROLLING"
  13. class="ch.qos.logback.core.rolling.RollingFileAppender">
  14. <file>${SYS_LOG_DIR}/${LOG_FILE}</file>
  15. <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 日志过滤器,只记录warn级别日志 ,若要配置其他级别,复制appender,修改level,并在root中配置-->
  16. <level>WARN</level>
  17. <onMatch>ACCEPT</onMatch>
  18. <onMismatch>DENY</onMismatch>
  19. </filter>
  20. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  21. <fileNamePattern>${SYS_LOG_DIR}/%d{yyyy-MM-dd}/${LOG_FILE}_%d{yyyy-MM-dd}_%i.zip</fileNamePattern>
  22. <timeBasedFileNamingAndTriggeringPolicy
  23. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  24. <maxFileSize>50MB</maxFileSize>
  25. </timeBasedFileNamingAndTriggeringPolicy>
  26. </rollingPolicy>
  27. <layout>
  28. <pattern>${fileLayoutPattern}</pattern>
  29. </layout>
  30. </appender>
  31.  
  32. <!-- 控制台输出 -->
  33. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  34. <layout name="StandardFormat" class="ch.qos.logback.classic.PatternLayout">
  35. <pattern>${consoleLayoutPattern}</pattern>
  36. </layout>
  37. </appender>
  38.  
  39. <logger name="java.sql.PreparedStatement" level="DEBUG" />
  40. <logger name="java.sql.Connection" level="DEBUG" />
  41. <logger name="java.sql.Statement" level="DEBUG" />
  42. <logger name="com.ibatis" level="DEBUG" />
  43. <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />
  44. <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />
  45. <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />
  46. <!-- <logger name="org.springframework" level="ERROR" /> -->
  47. <logger name="net.sf.ehcache" level="ERROR"/>
  48. <!-- <logger name="org.mybatis.spring" level="ERROR"/> -->
  49. <root level="DEBUG">
  50. <appender-ref ref="CONSOLE" /> <!-- 控制台输出 -->
  51. <appender-ref ref="LOG_ROLLING" /> <!-- 文件输出 -->
  52. </root>
  53. </configuration>

参考:

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

LogUtils.java

  1. package log.base;
  2.  
  3. package com.ghca.easyview.server.common.utils;
  4.  
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7.  
  8. public class LogUtils {
  9. /**
  10. * 错误输入日志
  11. */
  12. public static final Logger log = LoggerFactory.getLogger(LogUtils.class);
  13.  
  14. /**
  15. * 记录一直 info信息
  16. *
  17. * @param message
  18. */
  19. public static void logInfo(String message) {
  20. StringBuilder s = new StringBuilder();
  21. s.append((message));
  22. log.info(s.toString());
  23. }
  24.  
  25. public static void logInfo(String message, Throwable e) {
  26. StringBuilder s = new StringBuilder();
  27. s.append(("exception : -->>"));
  28. s.append((message));
  29. log.info(s.toString(), e);
  30. }
  31.  
  32. public static void logWarn(String message) {
  33. StringBuilder s = new StringBuilder();
  34. s.append((message));
  35.  
  36. log.warn(s.toString());
  37. }
  38.  
  39. public static void logWarn(String message, Throwable e) {
  40. StringBuilder s = new StringBuilder();
  41. s.append(("exception : -->>"));
  42. s.append((message));
  43. log.warn(s.toString(), e);
  44. }
  45.  
  46. public static void logDebug(String message) {
  47. StringBuilder s = new StringBuilder();
  48. s.append((message));
  49. log.debug(s.toString());
  50. }
  51.  
  52. public static void logDebug(String message, Throwable e) {
  53. StringBuilder s = new StringBuilder();
  54. s.append(("exception : -->>"));
  55. s.append((message));
  56. log.debug(s.toString(), e);
  57. }
  58.  
  59. public static void logError(String message) {
  60. StringBuilder s = new StringBuilder();
  61. s.append(message);
  62. log.error(s.toString());
  63. }
  64.  
  65. /**
  66. * 记录日志错误信息
  67. *
  68. * @param message
  69. * @param e
  70. */
  71. public static void logError(String message, Throwable e) {
  72. StringBuilder s = new StringBuilder();
  73. s.append(("exception : -->>"));
  74. s.append((message));
  75. log.error(s.toString(), e);
  76. }
  77. }

TEST

  1. package com.ghca.easyview.server.log.test;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5.  
  6. import org.junit.Before;
  7. import org.junit.Test;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10.  
  11. import ch.qos.logback.core.joran.spi.JoranException;
  12.  
  13. import com.ghca.easyview.server.common.utils.LogBackConfigLoader;
  14. import com.ghca.easyview.server.common.utils.LogUtils;
  15. import com.ghca.easyview.server.config.ServerConfig;
  16.  
  17. public class TestLog {
  18.  
  19. @Before
  20. public void before() {
  21. File file = new File(System.getProperty("user.dir"));
  22. String path = file.getPath() + File.separator + "conf";
  23. // 将主要配置文件路径赋值给 ServerConfig.configPath属性
  24. ServerConfig.config_path = path;
  25. try {
  26. // 加载日志文件
  27. LogBackConfigLoader.load(ServerConfig
  28. .loadLogBackConfPath("logback.xml"));
  29. } catch (IOException | JoranException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33.  
  34. @Test
  35. public void test1() {
  36. LogUtils.logInfo("INFO ~");
  37. LogUtils.logDebug("DEBUG ~");
  38. LogUtils.logError("ERROR~");
  39. LogUtils.logWarn("WARN ~");
  40. }
  41. }

根据日志级别输出不等的日志信息,

转载请注明:http://www.cnblogs.com/gslyyq/

logback配置日志输出的更多相关文章

  1. Spring Boot - Logback配置日志要考虑哪些因素

    Spring Boot - Logback配置日志 出于性能等原因,Logback 目前是springboot应用日志的标配: 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式.@pdai ...

  2. springboot(二).springboot整合logback用于日志输出

    springboot整合logback用于日志输出 我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去 在这里,我们使用logbac ...

  3. 《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)

    1.简介 上一篇宏哥介绍是如何使用logback将日志输出到控制台中,但是如果需要发给相关人需要你拷贝出来,有时候由于控制台窗口的限制,有部分日志将会无法查看,因此我们还是需要将日志输出到文件中,因此 ...

  4. flask配置日志输出文件

    1.flask可以通过日志库来指点日志输出的路径, 配置日志输出的连接:www.gaodin.com

  5. 《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)

    1.简介 为了方便查看和归档:(1)不同包的日志可能要放到不同的文件中,如service层和dao层的日志:(2)不同日志级别:调试.信息.警告和错误等也要分文件输出.所以宏哥今天主要介绍和分享的是: ...

  6. Spring Boot系列之配置日志输出等级

    我们都知道Spring boot 默认使用 logback作进行日志输出,那么 在配置Spring boot日志输出时有两种方式: 通过application.properties 配置文件的方式来配 ...

  7. Logback自定义日志输出内容

    场景 一般情况下,日志打印的内容都是根据配置文件中配置的pattern格式指定好的.在我们调用logger.info(), logger.debug()等日志打印方法时,打印的内容格式与配置文件中的p ...

  8. log4j 配置日志输出(log4j.properties)

    轉: https://blog.csdn.net/qq_29166327/article/details/80467593 一.入门log4j实例 1.1 下载解压log4j.jar(地址:http: ...

  9. Windows环境下tomcat配置日志输出

    在Linux系统中,可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. 在windows下,catalina日志与Linux记录的内容有很大区别,大多信息 ...

随机推荐

  1. yii2引入js和css

    assets/AppAsset.php public $css = [ 'css/site.css', 'css/font/css/font-awesome.min.css', 'css/doc.cs ...

  2. Jquery each循环用法小结

    var str = res.ZhaoPian; var piclist = str.substring(0, str.length - 1).split(','); $.each(piclist, f ...

  3. Java 对比Hashtable、Hashmap、Treemap有什么不同?

    ①基本理解 Hashtable.Hashmap.Treemap都是最常见的一些Map实现,是以键值对的形式存储和操作数据的容器类型. Hashtable是Java类库提供的一个哈希实现,本身是同步的, ...

  4. [2011-3-9 12:59 ]As3.0中的位图(Bitmap/BitmapData)用法

    1.位图使用(模糊)滤镜 //创建一个矩形区域的BitmapData var bmd:BitmapData = new BitmapData(80, 30, false, 0xefefef); //画 ...

  5. Windows MFC控件消息编程

    1. Progress Bar Control Messages    PBM_DELTAPOS    PBM_GETPOS    PBM_GETRANGE    PBM_SETBARCOLOR    ...

  6. JS的魅力

    一.初探JavaScript魅力 基本知识: JavaScript是什么 网页特效原理 -JavaScript就是修改样式 编写JS流程 - 布局:HTML + CSS - 属性:确定修改哪些属性 - ...

  7. PHP之PDO_MYSQL扩展安装步骤

    转载地址:http://www.cnblogs.com/qq78292959/p/4084868.html 看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下. 这里我的系统是 ...

  8. Linux CentOS6环境下MySQL5.1升级至MySQL5.5版本过程

    转载地址:http://www.laozuo.org/6145.html 老左今天有在帮朋友的博客搬迁到另外一台VPS主机环境,其环境采用的是LLSMP架构的,原先的服务器采用的是LNMP网站环境,其 ...

  9. openwrt中的append-ubi定义在哪里

    include/image-commands.mk 定义如下: define Build/append-ubi sh $(TOPDIR)/scripts/ubinize-image.sh \ $(if ...

  10. JDK、J2EE、J2SE、J2ME的区别

    JDK.J2EE.J2SE.J2ME的区别 你对JDK.J2EE.J2SE.J2ME概念是否了解,这里和大家分享一下JDK.J2EE.J2SE.J2ME的概念以及他们的关系区别,相信本文介绍一定会让你 ...