Log4j配置说明
- 格式:docx
- 大小:26.59 KB
- 文档页数:30
RCP随着信息技术的不断发展,越来越多的企业和组织依赖于软件系统进行业务运营和管理。
而软件系统的稳定性和可靠性一直是企业和组织的重要关注点。
在这个过程中,日志是非常重要的一环。
软件系统会产生大量的日志,这些日志包含了系统的运行状态、异常信息、性能指标等重要信息。
通过对这些日志的收集和分析,可以及时发现系统故障、优化性能,提高系统的可靠性和稳定性。
本文将介绍RCP 程序的日志收集与分析实践。
一、RCP 程序简介RCP ( Rich Client Platform)是一个基于Eclipse 的框架,用于开发客户端应用程序。
RCP 程序可以在多个操作系统平台上运行,包括Windows、Linux 和Mac OS 等。
RCP 程序的架构分为三层:应用层、中间件层和系统层。
应用层包括用户界面、业务逻辑和数据持久化。
中间件层包括服务注册、服务提供和服务调用等。
系统层包括操作系统和底层接口。
二、RCP 程序的日志收集RCP 程序的日志信息最终会被输出到一个日志文件中。
在调试和问题排查时,需要查看日志文件中的信息。
因此,正确地配置日志输出非常重要。
下面介绍RCP 程序日志收集的实践:1. 使用log4j 作为日志框架:log4j 是一个开源的Java 日志框架,被广泛应用于Java 应用程序的日志记录。
在RCP 程序中,可以通过在插件中集成log4j,并通过配置文件设置日志输出级别和输出目的地。
下面是一个示例的log4j 配置文件:```log4j.rootLogger=INFO,FILElog4j.appender.FILE=org.apache.log4j.RollingFileAppenderlog4j.appender.FILE.File=${workspace_loc}/logs/eclipse.loglog4j.appender.FILE.MaxFileSize=10MBlog4j.appender.FILE.MaxBackupIndex=5yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%c] - %m%n```其中,rootLogger 设置日志输出级别为INFO,表示只输出INFO 级别及以上的日志信息;appender.FILE 设置输出目的为一个滚动式日志文件,文件大小不超过10MB,保留5 个备份文件;layout.ConversionPattern 设置日志输出格式。
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j='/log4j/'><appender name="console" class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %c{1}:%L - %m%n" /></layout></appender><appender name="activexAppender" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="logs/kettle.log" /><param name="DatePattern" value="yyyy-MM-dd" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" /></layout></appender><logger name="org.pentaho.di"><level value="on"/><appender-ref ref="activexAppender" /></logger><root><priority value ="off"></priority><appender-ref ref="console"></appender-ref> </root></log4j:configuration>。
Logback⼊门和配置说明Logback 是 Log4j 的改进版本,⽽且原⽣⽀持 SLF4J,Logback 的初始化步骤如下:1. 在类路径中查找 logback-test.xml 配置⽂件2. 在类路径中查找 logback.groovy 配置⽂件3. 在类路径中查找 logback.xml 配置⽂件4. 如果都没有找到,那边就是⽤默认配置,将⽇志输出到控制台maven 依赖在使⽤ logback 之前,需要增加相关依赖,slf4j-api 是 slf4j 的核⼼,定义了简单统⼀的接⼝,logback-classic 则是具体的⽇志实现。
<dependencies><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency></dependencies>⽇志⽰例⾃动⽇志配置配置最简单的⽅法就是使⽤ logback 的默认配置,默认配置是将⽇志输出到控制台,代码如下:package org.lixue.slf4j;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class HelloWorld{final static Logger logger=LoggerFactory.getLogger(HelloWorld.class);public static void main(String[]args){("HelloWorld");}}使⽤ logback-test.xml 或 logback.xml ⾃动配置在类路径中,创建 logback-test.xml 或 logback.xml 配置⽂件,并增加配置如下,该配置等价与⾃动配置:<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--encoders are assigned the typech.qos.logback.classic.encoder.PatternLayoutEncoderbydefault--><encoder><pattern>%d{HH:mm:ss.SSS}[%thread]%-5level%logger{36}-%msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="STDOUT"/></root></configuration>配置⽂件说明logback 配置⽂件的语法⾮常灵活。
MyBatis Log Plugin 是一个用于记录MyBatis 执行过程的插件,它可以帮助开发人员在调试和优化MyBatis 查询时更加方便地查看SQL 语句、参数和执行结果等信息。
下面是MyBatis Log Plugin 的使用方式:1. 添加MyBatis Log Plugin 依赖:首先,需要在项目的构建文件中添加MyBatis Log Plugin 的依赖,可以通过Maven、Gradle 或手动引入Jar 包的方式添加。
2. 配置MyBatis Log Plugin:在MyBatis 的配置文件中,需要配置MyBatis Log Plugin。
具体的配置方式取决于你使用的是XML 配置文件还是Java 配置类。
以下是一个XML 配置文件的示例:<configuration><plugins><plugin interceptor="org.apache.ibatis.logging.log4j.Log4jImpl"/><!-- 其他插件配置--></plugins><!-- 其他MyBatis 配置--></configuration>在上述示例中,我们配置了Log4jImpl 作为MyBatis Log Plugin 的拦截器,用于记录MyBatis 的执行日志。
3. 配置日志框架:MyBatis Log Plugin 需要依赖一个日志框架来记录执行日志,常见的日志框架包括Log4j、Logback 等。
你需要根据自己项目中使用的日志框架来配置相应的日志输出。
4. 使用MyBatis Log Plugin:配置完成后,MyBatis Log Plugin 将会记录MyBatis 的执行日志,包括SQL 语句、参数、执行时间等信息。
你可以在日志中查看这些信息,以便进行调试和优化。
Log⽇志级别从⾼到低排序ERROR、WARN、INFO、DEBUG说明:我们项⽬中没有加载,log⽇志有四个,⼤家可以在log4j⽂件中进⾏配置。
⽇志记录器(Logger)是⽇志处理的核⼼组件。
log4j具有5种正常级别(Level)。
⽇志记录器(Logger)的可⽤级别Level (不包括⾃定义级别 Level),以下内容就是摘⾃log4j API ():static Level WARNWARN level表明会出现潜在错误的情形。
static Level ERRORERROR level指出虽然发⽣错误事件,但仍然不影响系统的继续运⾏。
static Level FATALFATAL level指出每个严重的错误事件将会导致应⽤程序的退出。
另外,还有两个可⽤的特别的⽇志记录级别: (以下描述来⾃log4j API):static Level ALLALL Level是最低等级的,⽤于打开所有⽇志记录。
static Level OFFOFF Level是最⾼等级的,⽤于关闭所有⽇志记录。
⽇志记录器(Logger)的⾏为是分等级的。
如下表所⽰:分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
Log4j建议只使⽤四个级别,优先级从⾼到低分别是 ERROR、WARN、INFO、DEBUG。
通过在这⾥定义的级别,您可以控制到应⽤程序中相应级别的⽇志信息的开关。
⽐如在这⾥定义了INFO级别,则应⽤程序中所有DEBUG级别的⽇志信息将不被打印出来,也是说⼤于等于的级别的⽇志才输出。
⽇志记录的级别有继承性,⼦类会记录⽗类的所有的⽇志级别。
logger⽇志设置:1、加包:log4j-1.2.16.jar ⼀般还会加⼊ commons-logging-1.1.1.jar2、在CLASSPATH 下建⽴log4j.properties[html]1. log4j.appender.stdout=org.apache.log4j.ConsoleAppender2. log4j.appender.stdout.Target=System.out3. yout=org.apache.log4j.PatternLayout4. yout.ConversionPattern=%d %5p %c{1}:%L - %m%n5.6. log4j.appender.file=org.apache.log4j.RollingFileAppender7. log4j.appender.file.File=${catalina.home}/logs/ddoMsg.log8. #log4j.appender.file.File=D:/SmgpAppService/logs/smgpApp.log9. log4j.appender.file.MaxFileSize=1024KB10. log4j.appender.file.MaxBackupIndex=10011. yout=org.apache.log4j.PatternLayout12. yout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss} %5p %c %t: - %m%n13.14. #INFO WARN ERROR DEBUG15. log4j.rootLogger=WARN, file, stdout16. #log4j.rootLogger=INFO,stdout17. mons.logging.Log=mons.logging.impl.SimpleLog18. #mons.digester.Digester=debug19. #mons.digester.ObjectCreateRule=debug20. #mons.digester.Digester.sax=info21.22. .jason.ddoMsg=debug在要输出的⽇志的类中定义:private static final org.apache.log4j.Logger logger = Logger.getLogger(类名.class);在类输位置:(XXX);logger 配置说明:1、 log4j.rootLogger=INFO, stdout , R此句为将等级为INFO的⽇志信息输出到stdout和R这两个⽬的地,stdout和R的定义在下⾯的代码,可以任意起名。
JAVAlog4j同一个类日志输出到不同的log文件中配置不能通过简单的配置log4j配置文件来实现,而需要在代码中调用Log4j的类来实现。
下面给出实现类:/** * @author QG * * 2010-7-22 上午10:27:50 LoggerRun.java */public class LoggerRun { //设定两个Logpublic static Logger infoLogger = Logger.getLogger("info.logger");public static Logger errorLogger = Logger.getLogger("error.logger");public static final String PROFILE = "log4j.properties";//设定异常log输出的路径private static final String PATH = Constants.PATH;static{try{URL configFileResource = (new File(LoggerRun.class.getResource("/").getPath()+PROFILE)).toUR L();PropertyConfigurator.configure(configFileResource);}catch(Exception e){e.printStackTrace();}}public LoggerRun(){try {Date date = new Date();SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");String fileName = PATH + "exception_" +sf.format(date).toString() + ".log";FileAppender exceptionAppender = new FileAppender(new SimpleLayout(), fileName);errorLogger.addAppender(exceptionAppender);} catch (Exception e) {e.printStackTrace();}}}同时给出配置文件配置信息:.logger=INFO, info,stdoutlog4j.category.error.logger=ERROR,errorlog4j.appender.stdout=org.apache.log4j.ConsoleAppender yout=org.apache.log4j.PatternLayo utyout.ConversionPattern=%d{yyyy/ MM/dd HH:mm:ss.SSS} %-5p %m%=org.apache.log4j.RollingFileAppe nder.File=bin/log/info.log.MaxFileSize=100kb.MaxBackupIndex=4yout=org.apache.log4j.PatternLayout yout.ConversionPattern=%d{yyyy/MM /dd HH:mm:ss.SSS} %-5p %m%nlog4j.appender.error=org.apache.log4j.RollingFileApp enderlog4j.appender.error.File=bin/log/error.loglog4j.appender.error.MaxFileSize=100kblog4j.appender.error.MaxBackupIndex=4yout=org.apache.log4j.PatternLayout yout.ConversionPattern=%d{yyyy/M M/dd HH:mm:ss.SSS} %-5p %m%n在给出测试类:public class TestLog {public static final Logger logger=Logger.getLogger(T estLog.class);/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=0;i<10;i++){if(i<5){("TEST The Logger DUBUG");}else{LoggerRun.errorLogger.error("TEST THe LOGGER ERROR");}}}}同一个类中的日志按类型输出到了不同的日志文件中。
log4net使用手册1 简介1.1Log4net的优点:几乎所有的大型应用都会有自己的用于跟踪调试的API。
因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。
然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。
经验表明,日志记录往往是软件开发周期中的重要组成部分。
它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。
另外,日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。
Log4net就是为这样一个目的设计的,用于.NET开发环境的日志记录包。
1.2Log4net的安装:用户可以从/log4net/下载log4net的源代码。
解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。
用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。
2 Log4net的结构log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及Layout(布局).2.1Logger2.1.1 Logger接口Logger是应用程序需要交互的主要组件,它用来产生日志消息。
产生的日志消息并不直接显示,还要预先经过Layout的格式化处理后才会输出。
Logger提供了多种方式来记录一个日志消息,你可以在你的应用程序里创建多个Logger,每个实例化的Logger对象都被log4net框架作为命名实体(named entity)来维护。
这意味着为了重用Logger对象,你不必将它在不同的类或对象间传递,只需要用它的名字为参数调用就可以了。
log4net框架使用继承体系,继承体系类似于.NET中的名字空间。
Java⽇志框架SLF4J和log4j以及logback的联系和区别1.SLF4J(Simple logging Facade for Java)意思为简单⽇志门⾯,它是把不同的⽇志系统的实现进⾏了具体的抽象化,只提供了统⼀的⽇志使⽤接⼝,使⽤时只需要按照其提供的接⼝⽅法进⾏调⽤即可,由于它只是⼀个接⼝,并不是⼀个具体的可以直接单独使⽤的⽇志框架,所以最终⽇志的格式、记录级别、输出⽅式等都要通过接⼝绑定的具体的⽇志系统来实现,这些具体的⽇志系统就有log4j,logback,java.util.logging等,它们才实现了具体的⽇志系统的功能。
如何使⽤SLF4J?既然SLF4J只是⼀个接⼝,那么实际使⽤时必须要结合具体的⽇志系统来使⽤,我们⾸先来看SLF4J和各个具体的⽇志系统进⾏绑定时的框架原理图:其实slf4j原理很简单,他只提供⼀个核⼼slf4j api(就是slf4j-api.jar包),这个包只有⽇志的接⼝,并没有实现,所以如果要使⽤就得再给它提供⼀个实现了些接⼝的⽇志包,⽐如:log4j,common logging,jdk log⽇志实现包等,但是这些⽇志实现⼜不能通过接⼝直接调⽤,实现上他们根本就和slf4j-api不⼀致,因此slf4j⼜增加了⼀层来转换各⽇志实现包的使⽤,当然slf4j-simple除外。
其结构如下:slf4j-api(接⼝层)|各⽇志实现包的连接层( slf4j-jdk14, slf4j-log4j)|各⽇志实现包所以,结合各⽇志实现包使⽤时提供的jar包情况为:SLF4J和logback结合使⽤时需要提供的jar:slf4j-api.jar,logback-classic.jar,logback-core.jarSLF4J和log4j结合使⽤时需要提供的jar:slf4j-api.jar,slf4j-log412.jar,log4j.jarSLF4J和JDK中java.util.logging结合使⽤时需要提供的jar:slf4j-api.jar,slf4j-jdk14.jarSLF4J和simple(SLF4J本⾝提供的⼀个接⼝的简单实现)结合使⽤时需要提供的jar:slf4j-api.jar,slf4j-simple.jar当然还有其他的⽇志实现包,以上是经常会使⽤到的⼀些。
IDEA中log4j⽆法输出到本地properties配置⽆效问题IDEA中log4j ⽆法输出到本地,properties配置⽆效问题。
log4j添加以后⽆法输出⽇志信息,经检查(按以下顺序):1.jar包导⼊正常2.log4j.properties配置⽂件正常可以输出,但是properties⽂件⽆效。
4.删除properties⽂件之后log依然可以输出,可判断properties⽂件失效,或被覆盖。
5.经过验证为框架本⾝默认的import java.util.logging.Logger优先级⾼于import org.apache.log4j.Logger;,在实例化Logger.getLogger();过程中,默认调⽤了框架本⾝的Logger类导致log4j失效。
解决⽅法:注意引⼊org.apache.log4j.Logger即可; 为⽅便使⽤可以在任意地⽅新建类并导⼊log4j.Logger,初始化logger对象。
import org.apache.log4j.Logger;public class TestLogger {static public Logger logger=Logger.getLogger(TestLogger.class);}在使⽤的时候,TestLogger.logger.debug("");("");TestLogger.logger.error("");.....。
当然,也可以结合logger与log4j实现⾃定义⽇志⼯⼚,⽤来容错,这⾥就不作延申。
总结以上所述是⼩编给⼤家介绍的IDEA中log4j ⽆法输出到本地 properties配置⽆效问题,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
在此也⾮常感谢⼤家对⽹站的⽀持!如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!。
文章标题:深度解析CAS Server日志级别设置与优化1.引言CAS Server作为一种常用的单点登录服务,对于日志级别的设置和优化显得尤为重要。
本文将深入探讨CAS Server日志级别的相关概念、设置方法及优化技巧,以帮助读者更全面地理解和应用CAS Server日志功能。
2. CAS Server日志级别的概念CAS Server的日志级别指的是对不同类型日志的优先级别设置,通常包括DEBUG、INFO、WARN、ERROR等级别。
不同级别的日志对应不同的信息记录和输出方式,同时也影响系统的性能和运行效率。
3. CAS Server日志级别的设置方法3.1 日志级别的配置文件在CAS Server的配置文件中,可以通过简单的配置来设置日志级别。
具体的配置方法如下所示:```xml<log4j:configuration xmlns:log4j=""><appender name="CONSOLE"class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" /></layout></appender><root><priority value="INFO" /><appender-ref ref="CONSOLE" /></root></log4j:configuration>```3.2 示例中的配置说明在上述示例中,我们可以看到使用了log4j框架来配置CAS Server的日志输出。
springboot配置log4j2⽇志,并输出到⽂件1、pom.xml中,如果导⼊了spring-boot-starter-web依赖包,那么必须先将⾃带的⽇志框架去掉,如下<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 排除springboot⾃带的logback框架 --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency>然后加⼊<!-- 引⼊springboot log4j2依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>2、在resources下建⼀个log4j2spring.xml<?xml version="1.0" encoding="UTF-8"?><!--Configuration后⾯的status,这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--><!--monitorInterval:Log4j能够⾃动检测修改配置⽂件和重新配置本⾝,设置间隔秒数--><configuration monitorInterval="5"><!--⽇志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--变量配置--><Properties><!-- 格式化输出:%date表⽰⽇期,%thread表⽰线程名,%-5level:级别从左显⽰5个字符宽度 %msg:⽇志消息,%n是换⾏符--><!-- %logger{36} 表⽰ Logger 名字最长36个字符 --><property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /><!-- 定义⽇志存储的路径,不要配置相对路径 --><property name="FILE_PATH" value="/logs" /><!--项⽬名称--><property name="FILE_NAME" value="demo" /></Properties><appenders><console name="Console" target="SYSTEM_OUT"><!--输出⽇志的格式--><PatternLayout pattern="${LOG_PATTERN}"/><!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/></console><!--⽂件会打印出所有信息,这个log每次运⾏程序会⾃动清空,由append属性决定,适合临时测试⽤--><File name="Filelog" fileName="${FILE_PATH}/test.log" append="false"><PatternLayout pattern="${LOG_PATTERN}"/></File><!-- 这个会打印出所有的info及以下级别的信息,每次⼤⼩超过size,则这size⼤⼩的⽇志会⾃动存⼊按年份-⽉份建⽴的⽂件夹下⾯并进⾏压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/${FILE_NAME}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的warn及以下级别的信息,每次⼤⼩超过size,则这size⼤⼩的⽇志会⾃动存⼊按年份-⽉份建⽴的⽂件夹下⾯并进⾏压缩,作为存档--><RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/${FILE_NAME}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的error及以下级别的信息,每次⼤⼩超过size,则这size⼤⼩的⽇志会⾃动存⼊按年份-⽉份建⽴的⽂件夹下⾯并进⾏压缩,作为存档--><RollingFile name="RollingFileError" fileName="${FILE_PATH}/${FILE_NAME}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile></appenders><!--Logger节点⽤来单独指定⽇志的形式,⽐如要为指定包下的class指定不同的⽇志级别等。
⽇志组件slf4j介绍及配置详解1 基本介绍每⼀个Java程序员都知道⽇志对于任何⼀个Java应⽤程序尤其是服务端程序是⾄关重要的,⽽很多程序员也已经熟悉各种不同的⽇志库,如java.util.logging、Apache log4j、logback。
但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候在你的项⽬中学习使⽤SLF4J了。
SLF4J不同于其他⽇志类库,与其它⽇志类库有很⼤的不同。
SLF4J(Simple logging Facade for Java)不是⼀个真正的⽇志实现,⽽是⼀个抽象层( abstraction layer),它允许你在后台使⽤任意⼀个⽇志类库。
如果是在编写供内外部都可以使⽤的API或者通⽤类库,那么你真不会希望使⽤你类库的客户端必须使⽤你选择的⽇志类库。
如果⼀个项⽬已经使⽤了log4j,⽽你加载了⼀个类库,⽐⽅说 Apache Active MQ——它依赖于于另外⼀个⽇志类库logback,那么你就需要把它也加载进去。
但如果Apache Active MQ使⽤了SLF4J,你可以继续使⽤你的⽇志类库⽽⽆需忍受加载和维护⼀个新的⽇志框架的痛苦。
总的来说,SLF4J使你的代码独⽴于任意⼀个特定的⽇志API,这是对于API开发者的很好的思想。
虽然抽象⽇志类库的思想已经不是新鲜的事物,⽽且Apache commons logging也已经在使⽤这种思想了,但SLF4J正迅速成为Java世界的⽇志标准。
让我们再看⼏个使⽤SLF4J⽽不是log4j、logback或者java.util.logging的理由。
2 SLF4J对⽐Log4J,logback和java.util.Logging的优势正如我之前说的,在你的代码中使⽤SLF4J写⽇志语句的主要出发点是使得你的程序独⽴于任何特定的⽇志类库,依赖于特定类库可能需要使⽤不同于你已有的配置,并且导致更多维护的⿇烦。
mybatis日志打印sql参数拼接MyBatis是一款优秀的开源持久层框架,它能够帮助我们简化数据库操作的编码,提高开发效率。
在实际开发中,我们经常需要查看执行的SQL语句及其参数拼接,以便于调试和优化。
这篇文章将以1200字以上的篇幅,介绍如何打印MyBatis的SQL语句和参数拼接。
一、配置日志输出在MyBatis的配置文件中,我们可以通过配置日志工厂和日志级别,来决定日志的输出方式和输出的详细程度。
MyBatis支持多种日志框架,如Log4j、SLF4J等。
以下是通过配置文件方式配置日志输出的示例:<settings><setting name="logImpl" value="LOG4J"/></settings>这里我们配置了日志工厂为Log4j,就可以使用Log4j来输出MyBatis的日志信息。
二、打印参数拼接在MyBatis的SQL语句中,经常会包含动态参数,如条件判断、循环等。
为了方便调试,我们可以在输出日志中打印参数的具体拼接情况。
在Log4j的配置文件中,我们可以通过修改日志输出格式的方式,来打印SQL参数的拼接情况。
示例配置如下:<appender name="CONSOLE"class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p [%t] (%F:%L) -%m%n"/></layout></appender><logger name="org.mybatis.example.BlogMapper"additivity="false"><level value="DEBUG"/><appender-ref ref="CONSOLE"/></logger><root><priority value="DEBUG"/><appender-ref ref="CONSOLE"/></root>这段配置会将日志输出到控制台,并打印出日志级别、线程名、位置、消息。
cloudresetpwdupdateagent log4j替换版本Cloud Reset Password Update Agent(云重置密码更新代理)是一种用于管理云服务的工具,可以帮助用户轻松地重置密码和更新日志。
在这个文章中,我们将介绍如何使用log4j替换版本,以提高日志记录的性能和可靠性。
在替换过程中,需要注意一些关键点,并按照特定的操作步骤进行。
一、云重置密码更新代理日志云重置密码更新代理日志是记录云服务操作过程中重要信息的一种方式。
通过分析这些日志,用户可以了解操作过程中的问题和不足,从而优化服务质量。
在使用云重置密码更新代理时,请确保正确配置日志记录,以便在需要时进行故障排查。
二、log4j替换版本注意事项1.版本兼容性:在替换log4j版本时,请确保新版本与现有项目框架和依赖库兼容。
2.配置文件更新:替换log4j版本后,需要更新项目的配置文件,以确保日志记录功能正常运行。
3.日志记录格式:在替换log4j版本时,请注意新版本的日志记录格式是否与现有项目需求相符。
4.性能优化:log4j替换版本后,关注新版本在日志记录性能方面的表现,以确保系统资源的有效利用。
三、具体操作步骤1.下载并导入新版本log4j依赖库。
2.更新项目配置文件,配置新版本的日志记录参数。
3.重启项目,观察日志记录功能是否正常运行。
4.分析新版本log4j的性能表现,根据实际情况调整配置。
5.如有必要,进行故障排查和系统优化。
通过以上步骤,您可以成功地将log4j替换为最新版本,从而提高日志记录的性能和可靠性。
在实际操作过程中,还需要密切关注日志记录情况,及时发现并解决可能出现的问题。
总之,云重置密码更新代理日志在管理云服务过程中发挥着重要作用。
通过替换log4j版本,可以提升日志记录的性能和稳定性,从而更好地支持项目的运行。
解决springboot2.x集成log4j2调试⽇志⽆法关闭的问题springboot2.x集成log4j2时,始终⽆法关闭log4j2⾃⾝的⽇志输出已经做了如下配置:在log4j2.xml的配置⽂件中,配置configuration的status属性为OFF;确认系统所有地⽅⽆配置log4j2.debug;如上配置都⽆法解决问题,只能从源码着⼿⼀探究竟。
从log4j2-api包中,找到StatusLogger,其设置⽇志输出level的代码如下:private StatusLogger(final String name,final MessageFactory messageFactory) {super(name, messageFactory);final String dateFormat = PROPS.getStringProperty(STATUS_DATE_FORMAT, Strings.EMPTY);final boolean showDateTime = !Strings.isEmpty(dateFormat);this.logger =new SimpleLogger("StatusLogger", Level.ERROR,false,true, showDateTime,false,dateFormat, messageFactory, PROPS, System.err);this.listenersLevel = Level.toLevel(DEFAULT_STATUS_LEVEL, Level.WARN).intLevel();// LOG4J2-1813 if system property "log4j2.debug" is defined, print all status loggingif (isDebugPropertyEnabled()) {logger.setLevel(Level.TRACE);}}从上述代码可以看出,level的级别默认是设置为error,仅当有设置log4j2.debug时,才会输出trace⽇志。
log4j的配置: Log4j配置 第一步 加入log4j-1.2.8.jar到lib下。 第二步 在CLASSPATH下建立log4j.properties。内容如下: 1 log4j.rootCategory=INFO, stdout , R 2 3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 5 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 6 7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 8 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log 9 log4j.appender.R.layout=org.apache.log4j.PatternLayout 10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 11 12 log4j.logger.com.neusoft=DEBUG 13 log4j.logger.com.opensymphony.oscache=ERROR 14 log4j.logger.net.sf.navigator=ERROR 15 log4j.logger.org.apache.commons=ERROR 16 log4j.logger.org.apache.struts=WARN 17 log4j.logger.org.displaytag=ERROR 18 log4j.logger.org.springframework=DEBUG 19 log4j.logger.com.ibatis.db=WARN 20 log4j.logger.org.apache.velocity=FATAL 21 22 log4j.logger.com.canoo.webtest=WARN 23 24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 25 log4j.logger.org.hibernate=DEBUG 26 log4j.logger.org.logicalcobwebs=WARN 第三步 相应的修改其中属性,修改之前就必须知道这些都是干什么的,在第二部分讲解。 第四步 在要输出日志的类中加入相关语句: 定义属性:protected final Log log = LogFactory.getLog(getClass()); 在相应的方法中: if (log.isDebugEnabled()){ log.debug(“System „..”); } 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。 Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】。下面我们介绍使用Java特性文件做为配置文件的方法 具体如下:
1、配置根Logger,其语法为: log4j.rootLogger = [ level ] , appenderName1, appenderName2, „ level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 例如:log4j.rootLogger=info,A1,B2,C3 2、配置日志信息输出目的地,其语法为: log4j.appender.appenderName = fully.qualified.name.of.appender.class // "fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个: 1.org.apache.log4j.ConsoleAppender(控制台) 2.org.apache.log4j.FileAppender(文件) 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 1.ConsoleAppender选项 Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 Target=System.err:默认情况下是:System.out,指定输出控制台 2.FileAppender 选项 Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 3.DailyRollingFileAppender 选项 Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下: 1)'.'yyyy-MM: 每月 2)'.'yyyy-ww: 每周 3)'.'yyyy-MM-dd: 每天 4)'.'yyyy-MM-dd-a: 每天两次 5)'.'yyyy-MM-dd-HH: 每小时 6)'.'yyyy-MM-dd-HH-mm: 每分钟 4.RollingFileAppender 选项 Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。 MaxBackupIndex=2:指定可以产生的滚动文件的最大数。 实际应用: log4j.appender.A1=org.apache.log4j.ConsoleAppender //这里指定了日志输出的第一个位置A1是控制台ConsoleAppender
3、配置日志信息的格式,其语法为: A.log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class "fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个: 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局), 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 1.HTMLLayout 选项 LocationInfo=true:默认值是false,输出java文件名称和行号 Title=my app file: 默认值是 Log4J Log Messages. 2.PatternLayout 选项 ConversionPattern=%m%n :指定怎样格式化指定的消息。 3.XMLLayout 选项 LocationInfo=true:默认值是false,输出java文件和行号 实际应用: log4j.appender.A1.layout=org.apache.log4j.PatternLayout B. log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 这里需要说明的就是日志信息格式中几个符号所代表的含义: -X号: X信息输出时左对齐; %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,