`
usenrong
  • 浏览: 515056 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

logback 介绍及配置使用方法

    博客分类:
  • J2EE
 
阅读更多

新项目日志管理统一用logback,由于之前一直在用log4j,所以其实对logback这个由log4j长出来的家伙还不算陌生。


首先介绍下logback的前世今生。


slf4j由log4j作者Ceki开发,逐步取代apahce commons logging。

logback由log4j作者Ceki开发,逐步取代log4j。

slf4j等于commons-logging,是各种日志实现的通用入口,会根据classpath中存在下面哪一个Jar来决定具体的日志实现库。

 

logback相比较log4j的优势

slf4j支持参数化的logger.error("帐号ID:{}不存在", userId);

告别了if(logger.isDebugEnable()) 时代。

另外logback的整体性能比log4j也较佳,hibernate等项目已经采用了slf4j。

 

slf4j和logback的使用

1.如果日志的参数超过3个,需要写成

 

 

Java代码 复制代码 收藏代码
  1. Object[] params = {newVal, below, above};   
  2. logger.debug("Value {} was inserted between {} and {}.", params);  
Object[] params = {newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", params);

 

2.因为内部已优化,作者认为slf4j的logger不需要定义为static。

3.可设置缓存后批量写日志文件(但服务器如果重启,可能会丢失未写到磁盘的记录)

4.MDC,用Filter,将当前用户名等业务信息放入MDC中,在日志format定义中即可使用该变量。

5.JMS Appender用于告警, DB Appender用于业务日志等可以使用插件,如生成Log代码的Eclipse插件Log4E。

6.tomcat和glassfish中,设定日志路径为../logs/xxxx.log 都能将日志放入应用服务器本身的logs目录

 

最后把最近完善的一个logback.xml贴上,毕竟实际项目中的文件最能说明问题。

 

 

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <configuration>  
  4.     <substitutionProperty name="log.base" value="d:\\logback\\logback" />  
  5.     <jmxConfigurator />  
  6.     <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">  
  7.         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
  8.             <evaluator name="myEval">  
  9.                 <expression>message.contains("dao")</expression>  
  10.             </evaluator>  
  11.             <onMatch>ACCEPT</onMatch>  
  12.             <onMismatch>DENY</onMismatch>  
  13.         </filter>  
  14.         <layout class="ch.qos.logback.classic.PatternLayout">  
  15.             <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>  
  16.         </layout>  
  17.     </appender>  
  18.     <appender name="logfile-dao"  
  19.         class="ch.qos.logback.core.rolling.RollingFileAppender">  
  20.         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
  21.             <evaluator name="myEval_dao">  
  22.                 <expression>message.contains("dao")</expression>  
  23.             </evaluator>  
  24.             <onMatch>ACCEPT</onMatch>  
  25.             <onMismatch>DENY</onMismatch>  
  26.         </filter>  
  27.         <Encoding>UTF-8</Encoding>  
  28.         <File>${log.base}_dao.log</File>  
  29.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  30.             <FileNamePattern>${log.base}.%d{yyyy-MM-dd}_dao.log.zip   
  31.             </FileNamePattern>  
  32.         </rollingPolicy>  
  33.         <layout class="ch.qos.logback.classic.PatternLayout">  
  34.             <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>  
  35.         </layout>  
  36.     </appender>  
  37.     <appender name="logfile-service"  
  38.         class="ch.qos.logback.core.rolling.RollingFileAppender">  
  39.         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
  40.             <evaluator name="myEval_service">  
  41.                 <expression>message.contains("service.impl")</expression>  
  42.             </evaluator>  
  43.             <onMatch>ACCEPT</onMatch>  
  44.             <onMismatch>DENY</onMismatch>  
  45.         </filter>  
  46.         <Encoding>UTF-8</Encoding>  
  47.         <File>${log.base}_service.log</File>  
  48.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  49.             <FileNamePattern>${log.base}.%d{yyyy-MM-dd}_service.log.zip   
  50.             </FileNamePattern>  
  51.         </rollingPolicy>  
  52.         <layout class="ch.qos.logback.classic.PatternLayout">  
  53.             <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>  
  54.         </layout>  
  55.     </appender>  
  56.     <appender name="jms_dao" class="ch.qos.logback.classic.net.JMSQueueAppender">  
  57.         <InitialContextFactoryName>  
  58.             org.apache.activemq.jndi.ActiveMQInitialContextFactory   
  59.         </InitialContextFactoryName>  
  60.         <ProviderURL>tcp://192.168.1.120:61616</ProviderURL>  
  61.         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
  62.             <evaluator name="myEval_service">  
  63.                 <expression>message.contains("dao")</expression>  
  64.             </evaluator>  
  65.             <onMatch>ACCEPT</onMatch>  
  66.             <onMismatch>DENY</onMismatch>  
  67.         </filter>  
  68.         <QueueConnectionFactoryBindingName>ConnectionFactory   
  69.         </QueueConnectionFactoryBindingName>  
  70.         <QueueBindingName>cms_dao_log</QueueBindingName>  
  71.     </appender>  
  72.     <appender name="jms_service" class="ch.qos.logback.classic.net.JMSQueueAppender">  
  73.         <InitialContextFactoryName>  
  74.             org.apache.activemq.jndi.ActiveMQInitialContextFactory   
  75.         </InitialContextFactoryName>  
  76.         <ProviderURL>tcp://192.168.1.120:61616</ProviderURL>  
  77.         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
  78.             <evaluator name="myEval_service">  
  79.                 <expression>message.contains("service.impl")</expression>  
  80.             </evaluator>  
  81.             <onMatch>ACCEPT</onMatch>  
  82.             <onMismatch>DENY</onMismatch>  
  83.         </filter>  
  84.         <QueueConnectionFactoryBindingName>ConnectionFactory   
  85.         </QueueConnectionFactoryBindingName>  
  86.         <QueueBindingName>cms_service_log</QueueBindingName>  
  87.     </appender>  
  88.     <logger name="com.cms5.cmsservice.jms">  
  89.         <level value="DEBUG" />  
  90.     </logger>  
  91.     <logger name="java.sql.PreparedStatement">  
  92.         <level value="DEBUG" />  
  93.     </logger>  
  94.     <logger name="java.sql.Connection">  
  95.         <level value="DEBUG" />  
  96.     </logger>  
  97.     <logger name="java.sql.Statement">  
  98.         <level value="DEBUG" />  
  99.     </logger>  
  100.     <logger name="com.ibatis">  
  101.         <level value="DEBUG" />  
  102.     </logger>  
  103.     <logger name="com.ibatis.common.jdbc.SimpleDataSource">  
  104.         <level value="DEBUG" />  
  105.     </logger>  
  106.     <logger name="com.ibatis.common.jdbc.ScriptRunner">  
  107.         <level value="DEBUG" />  
  108.     </logger>  
  109.     <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate">  
  110.         <level value="DEBUG" />  
  111.     </logger>  
  112.     <logger name="com.danga.MemCached">  
  113.         <level value="INFO" />  
  114.     </logger>  
  115.     <logger name="org.springframework.test">  
  116.         <level value="DEBUG" />  
  117.     </logger>  
  118.     <logger name="org.apache.struts2">  
  119.         <level value="DEBUG" />  
  120.     </logger>  
  121.     <root>  
  122.         <level value="INFO" />  
  123.         <!--<appender-ref ref="stdout" />  
  124.         -->  
  125.         <appender-ref ref="logfile-dao" />  
  126.         <appender-ref ref="logfile-service" />  
  127.         <appender-ref ref="jms_dao" />  
  128.         <appender-ref ref="jms_service" />  
  129.     </root>  
  130. </configuration>  
<?xml version="1.0" encoding="UTF-8"?>

<configuration>
	<substitutionProperty name="log.base" value="d:\\logback\\logback" />
	<jmxConfigurator />
	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
		<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
			<evaluator name="myEval">
				<expression>message.contains("dao")</expression>
			</evaluator>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
		</layout>
	</appender>
	<appender name="logfile-dao"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
			<evaluator name="myEval_dao">
				<expression>message.contains("dao")</expression>
			</evaluator>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<Encoding>UTF-8</Encoding>
		<File>${log.base}_dao.log</File>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${log.base}.%d{yyyy-MM-dd}_dao.log.zip
			</FileNamePattern>
		</rollingPolicy>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
		</layout>
	</appender>
	<appender name="logfile-service"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
			<evaluator name="myEval_service">
				<expression>message.contains("service.impl")</expression>
			</evaluator>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<Encoding>UTF-8</Encoding>
		<File>${log.base}_service.log</File>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${log.base}.%d{yyyy-MM-dd}_service.log.zip
			</FileNamePattern>
		</rollingPolicy>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
		</layout>
	</appender>
	<appender name="jms_dao" class="ch.qos.logback.classic.net.JMSQueueAppender">
		<InitialContextFactoryName>
			org.apache.activemq.jndi.ActiveMQInitialContextFactory
		</InitialContextFactoryName>
		<ProviderURL>tcp://192.168.1.120:61616</ProviderURL>
		<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
			<evaluator name="myEval_service">
				<expression>message.contains("dao")</expression>
			</evaluator>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<QueueConnectionFactoryBindingName>ConnectionFactory
		</QueueConnectionFactoryBindingName>
		<QueueBindingName>cms_dao_log</QueueBindingName>
	</appender>
	<appender name="jms_service" class="ch.qos.logback.classic.net.JMSQueueAppender">
		<InitialContextFactoryName>
			org.apache.activemq.jndi.ActiveMQInitialContextFactory
		</InitialContextFactoryName>
		<ProviderURL>tcp://192.168.1.120:61616</ProviderURL>
		<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
			<evaluator name="myEval_service">
				<expression>message.contains("service.impl")</expression>
			</evaluator>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<QueueConnectionFactoryBindingName>ConnectionFactory
		</QueueConnectionFactoryBindingName>
		<QueueBindingName>cms_service_log</QueueBindingName>
	</appender>
	<logger name="com.cms5.cmsservice.jms">
		<level value="DEBUG" />
	</logger>
	<logger name="java.sql.PreparedStatement">
		<level value="DEBUG" />
	</logger>
	<logger name="java.sql.Connection">
		<level value="DEBUG" />
	</logger>
	<logger name="java.sql.Statement">
		<level value="DEBUG" />
	</logger>
	<logger name="com.ibatis">
		<level value="DEBUG" />
	</logger>
	<logger name="com.ibatis.common.jdbc.SimpleDataSource">
		<level value="DEBUG" />
	</logger>
	<logger name="com.ibatis.common.jdbc.ScriptRunner">
		<level value="DEBUG" />
	</logger>
	<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate">
		<level value="DEBUG" />
	</logger>
	<logger name="com.danga.MemCached">
		<level value="INFO" />
	</logger>
	<logger name="org.springframework.test">
		<level value="DEBUG" />
	</logger>
	<logger name="org.apache.struts2">
		<level value="DEBUG" />
	</logger>
	<root>
		<level value="INFO" />
		<!--<appender-ref ref="stdout" />
		-->
		<appender-ref ref="logfile-dao" />
		<appender-ref ref="logfile-service" />
		<appender-ref ref="jms_dao" />
		<appender-ref ref="jms_service" />
	</root>
</configuration>

 

就先不做说明了,里面的配置还是比较明确的,关于jmsappender那部分,之前也做过简单说明。

分享到:
评论

相关推荐

    Logback类库含logback.xml配置文件

    学习 Logback 包括理解如何配置 `logback.xml` 文件以满足项目需求,如何在代码中使用 SLF4J API 来记录日志,以及如何管理和优化日志输出,比如控制日志文件大小、滚动策略等。对于 Java 开发者来说,熟练掌握 ...

    logback jar包和logback.xml配置文件打包下载 小白新手学Java

    在这里,我们关注的是SLF4J的API库`slf4j-api-1.7.26.jar`,以及Logback的两个核心组件`logback-core-1.2.3.jar`和`logback-classic-1.2.3.jar`,以及配置文件`logback.xml`。 首先,`slf4j-api-1.7.26.jar`是SLF4J...

    logback-slf4j日志配置文件-下载即可使用

    "logback-slf4j日志配置文件下载即可使用" logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中...

    logback通用xml配置

    用于logback框架通用xml配置文件

    LogBack配置文件

    LogBack配置文件,主要包括LOGBack的配置文件内容

    springboot日志框架logback异步输出配置

    目前所有的日志记录方式采用的都是同步的方式,即直接将日志写入文件。每次日志输出到文件都会进行一次磁盘IO,在多应用的时候这种效果会导致一定的线程运行延迟,所以可以采用异步的方式处理。...

    springboot-logback配置

    springboot-logback日志文件配置

    logback日志写logstash配置appender参考

    logback日志写logstash配置appender参考

    logback日志配置

    本文详细介绍了 logback 日志配置的基本原理和具体实现方法,包括必要的依赖包、XML 配置文件的结构及各个元素的作用。通过对控制台输出、文件输出以及特殊场景下的日志配置进行细致分析,可以帮助开发者更好地理解...

    logback配置文件

    logback学习使用的配置文件,logback入门使用配置

    logback配置详解

    logback 配置详解 logback 是由 log4j 创始人设计的另一个开源日志组件,它当前分为三个模块:logback-core、logback-classic 和 logback-access。logback-classic 是 log4j 的一个改良版本,同时它完整实现了 slf4...

    logback介绍

    如果没有找到这些文件,Logback 将使用默认的 `BasicConfigurator` 配置。下面是一个基本的 `logback.xml` 文件示例: ```xml &lt;appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"&gt; ...

    log4j 和 logback配置资源

    在给定的压缩包中,"log4j.doc"和"logback配置.docx"很可能是两份文档,详细介绍了如何配置和使用这两个框架。"logback-1.2.3.zip"是Logback的一个版本包,其中可能包含了库文件和其他相关资源,开发者可以解压后...

    SpringBoot Logback配置,SpringBoot日志配置

    Spring Boot推荐使用`logback-spring.xml`而不是传统的`logback.xml`,因为`logback-spring.xml`会由Spring Boot的自动配置机制处理,可以更好地与Spring的其他特性集成。 **配置基本结构** 一个基础的`logback-...

    logback日志配置demo

    本教程将详细介绍如何配置 logback 以实现日志记录,并探讨不同配置方式。 首先,`pom.xml` 文件是 Maven 项目的配置文件,它包含了项目的依赖信息。在 logback 配置中,我们需要在 `pom.xml` 中引入 logback 相关...

    logback使用方式简单总结

    通过以上介绍,我们对 Logback 的使用方式有了基本了解。在实际应用中,你可以根据项目需求调整配置,实现定制化的日志记录和管理。在提供的 `LogbackTest` 文件中,可能包含了一些示例代码,可以进一步学习如何在...

    springboot整合logback配置文件

    springboot整合logback配置文件

    logback1.1.2配置事例

    总的来说,logback 1.1.2 配置案例涵盖了日志框架的核心组件、配置文件的结构以及如何在代码中使用日志API。理解这些知识有助于优化日志系统,提升应用的可维护性和调试效率。通过适当配置,logback 可以满足不同...

    logback-prod生产环境的日志配置和打印方式

    资源是logback-prod生产环境的日志配置和打印方式,以下内容仅供自己学习和使用!请勿用作商业用途!

    logbackーslf4j-配置文件实例 难得

    Logback配置文件 Logback的配置主要通过`logback.xml`文件完成,这是一个XML格式的配置文件,用于定义日志级别、日志输出目的地、过滤器等。以下是一份基本的`logback.xml`配置示例: ```xml ...

Global site tag (gtag.js) - Google Analytics