- 浏览: 515056 次
- 性别:
- 来自: 南京
最新评论
-
usenrong:
转载 http://www.ijiandao.com/safe ...
DDOS及CC攻击防护经验 -
usenrong:
/sbin/iptables -I INPUT -p tcp ...
CentOS_6.5配置iptables防火墙策略 -
usenrong:
http://maven.aliyun.com/nexus/
aliyun阿里云Maven仓库镜像地址——加速你的maven构建 -
buxin_2008:
qkjava 写道安装了 boot2dockerhttps:/ ...
Docker介绍以及其相关术语、底层原理和技术 -
usenrong:
1.查找文件find / -name filename.txt ...
Java 开发必会的 Linux 命令
新项目日志管理统一用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个,需要写成
- Object[] params = {newVal, below, above};
- 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 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>
<?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那部分,之前也做过简单说明。
发表评论
-
对Java意义重大的7个性能指标
2015-11-17 15:05 4997个最有影响的衡量标 ... -
使用四种框架分别实现1百万websocket常连接的服务器
2015-07-11 22:06 1502目录 [−] 服务器的参数调优 -
微观SOA:服务设计原则及其实践方式(上篇)
2015-06-05 08:46 846大量互联网公司都 ... -
分布式RPC框架
2015-05-25 20:25 1237分布式RPC框架:Polaris 在长期的业务发展过程中,对 ... -
关于Java集合
2015-04-22 16:59 711在尽可能短的篇幅里, ... -
微信卡券卡包支付及红包发放系统HTTPS双向认证
2015-03-11 17:18 2880现在邮件发出的文件有四个,分别是apiclient_ ... -
tomcat基于域名的多应用部署及共享jar资源
2015-02-13 15:21 1047最近帮公司开 ... -
Hibernate Search 的常用注解
2015-02-10 19:05 7131. @Indexed -> index 指定索引名 ... -
如何构建高性能服务端程序
2014-12-01 10:52 926接触过很多编程语言, ... -
如何构建高性能服务端程序
2014-12-01 10:52 2接触过很多编程语言, ... -
如何构建高性能服务端程序
2014-12-01 10:50 2接触过很多编程语言, ... -
如何构建高性能服务端程序
2014-12-01 10:47 2接触过很多编程语言, ... -
Java应用的负载均衡、集群、高可用(HA)解决方案
2014-11-24 16:47 32191、熟悉几个组件1.1、apache —— ... -
Criteria 和 DetachedCriteria的区别与使用
2014-08-26 20:14 883Criteria 和 DetachedCriteria ... -
IntelliJ IDEA常用 快捷键
2013-10-08 10:17 1458代码提示 KEYMAP->Main m ... -
Intellij IDEA快捷键及其使用技巧
2013-08-27 14:09 11681. IDEA内存优化 先看看你机器本身的配置而配置. \I ... -
CKFinder 2.3 for java 破解使用
2013-06-26 14:39 1877CKFinder 2.3整合 for java 破解篇ckf ... -
SSH网上商城 基于Struts2 Hibernate Spring J2EE框架结构的电子商务网站
2013-01-31 11:15 2952一个基于Struts2 Hibernate Spring框架 ... -
. System.exit(0)和System.exit(1) 和return 区别
2013-01-30 08:38 30261、System.exit(0)和System.exit(1 ... -
解决MySQL错误reading initial communication packet
2013-01-06 15:51 3713使用navicat远程访问VPS云主机 出现如题rea ...
相关推荐
学习 Logback 包括理解如何配置 `logback.xml` 文件以满足项目需求,如何在代码中使用 SLF4J API 来记录日志,以及如何管理和优化日志输出,比如控制日志文件大小、滚动策略等。对于 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是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中...
用于logback框架通用xml配置文件
LogBack配置文件,主要包括LOGBack的配置文件内容
目前所有的日志记录方式采用的都是同步的方式,即直接将日志写入文件。每次日志输出到文件都会进行一次磁盘IO,在多应用的时候这种效果会导致一定的线程运行延迟,所以可以采用异步的方式处理。...
springboot-logback日志文件配置
logback日志写logstash配置appender参考
本文详细介绍了 logback 日志配置的基本原理和具体实现方法,包括必要的依赖包、XML 配置文件的结构及各个元素的作用。通过对控制台输出、文件输出以及特殊场景下的日志配置进行细致分析,可以帮助开发者更好地理解...
logback学习使用的配置文件,logback入门使用配置
logback 配置详解 logback 是由 log4j 创始人设计的另一个开源日志组件,它当前分为三个模块:logback-core、logback-classic 和 logback-access。logback-classic 是 log4j 的一个改良版本,同时它完整实现了 slf4...
如果没有找到这些文件,Logback 将使用默认的 `BasicConfigurator` 配置。下面是一个基本的 `logback.xml` 文件示例: ```xml <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> ...
在给定的压缩包中,"log4j.doc"和"logback配置.docx"很可能是两份文档,详细介绍了如何配置和使用这两个框架。"logback-1.2.3.zip"是Logback的一个版本包,其中可能包含了库文件和其他相关资源,开发者可以解压后...
Spring Boot推荐使用`logback-spring.xml`而不是传统的`logback.xml`,因为`logback-spring.xml`会由Spring Boot的自动配置机制处理,可以更好地与Spring的其他特性集成。 **配置基本结构** 一个基础的`logback-...
本教程将详细介绍如何配置 logback 以实现日志记录,并探讨不同配置方式。 首先,`pom.xml` 文件是 Maven 项目的配置文件,它包含了项目的依赖信息。在 logback 配置中,我们需要在 `pom.xml` 中引入 logback 相关...
通过以上介绍,我们对 Logback 的使用方式有了基本了解。在实际应用中,你可以根据项目需求调整配置,实现定制化的日志记录和管理。在提供的 `LogbackTest` 文件中,可能包含了一些示例代码,可以进一步学习如何在...
springboot整合logback配置文件
总的来说,logback 1.1.2 配置案例涵盖了日志框架的核心组件、配置文件的结构以及如何在代码中使用日志API。理解这些知识有助于优化日志系统,提升应用的可维护性和调试效率。通过适当配置,logback 可以满足不同...
资源是logback-prod生产环境的日志配置和打印方式,以下内容仅供自己学习和使用!请勿用作商业用途!
Logback配置文件 Logback的配置主要通过`logback.xml`文件完成,这是一个XML格式的配置文件,用于定义日志级别、日志输出目的地、过滤器等。以下是一份基本的`logback.xml`配置示例: ```xml ...