log4j日志配置

基于log4j的灵活日志配置一、概述应用程序中的日志记录主要基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。

经验表明日志记录是开发周期中的重要组成部分。

最简单的做法就是在代码中嵌入许多的打印语句,但是这样打印语句会充斥代码的主体,显然不是一个好方法。

因此,使用成熟的框架例如Log4j,则会更具灵活性。

Log4j 框架是用Java 语言编写的标准日志记录框架。

作为Jakarta 项目的一部分,它在Apache 软件许可证(Apache Software License)下分发,以速度和灵活性为中心概念:Log4j 环境是完全可配置的,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

Log4j由三个重要的部件构成:记录器(Loggers)、输出源(Appenders)和布局(Layouts)。

记录器按照布局中指定的格式把日志信息写入一个或多个输出源。

输出源可以是控制台、文本文件、XML文件或Socket,甚至还可以把信息写入到Windows事件日志或通过电子邮件发送。

我们可以通过配置文件来部署这些组件。

其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。

但是,使用配置文件将使您的应用程序更加灵活。

本文从描述log4j 体系结构的主要组件着手。

然后是描述基本用法和配置的简单示例。

二、使用说明2.1定义配置文件Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。

下面我们介绍使用Java属性文件做为配置文件的方法:2.1.1. 配置记录器(logger)Log4j的记录器包含两种,一个根记录器它必须且永远存在,且不能通过名字检索或引用,在配置文件中,根记录器定义方法如下:log4j.rootLogger = [ level ] , appenderName, appenderName, …注:Level是记录器的级别,它是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。

Log4j建议只使用四个级别:ERROR、WARN、INFO、DEBUG( DEBUG < INFO < W ARN < ERROR < FATAL)如果一条log信息的级别,大于等于记录器的级别值,那么记录器就会记录它。

例如level 被设置为INFO级别,那么应用程序中所有的DEBUG的日志信息将不被打印出来。

通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。

appenderName是输出源的名字,它指定日志信息输出到哪个地方。

您可以为一个记录器指定多个输出源。

除了根记录器之外,log4j允许程序员定义其它对多个记录器,每个记录器有自己的名字如:l og4j.logger.loggerName = [ level ] , appenderName, appenderName, …在Log4J中Logger是具有层次关系的,Log4j配置的记录器之间的遵循“父子关系”,记录器之间通过名字来表明隶属关系(或家族关系),它们有一个共同的根:rootLogger,其它Logger遵循类似包的层次,例如:static Logger root = Logger.getRootLogger();static Logger log1 = Logger.getLogger("cc");static Logger log2 = Logger.getLogger("cc.ejb");static Logger log3 = Logger.getLogger("cc.ejb.my.TestApp");注:以上代码中root是所有log1、log2、log3的祖先,log1是log2的父亲,log2是log3的父亲,因此一般情况下,仅需要配置好rootLogger,其它子记录器都会从中继承rootLogger 的配置。

如果修改了rootLogger的配置,其它所有的子记录器也会继承这种变化。

这样就大大地方便了配置。

2.1.2配置日志信息输出(Appender)log4j 还允许日志记录请求打印到多个输出目的地,按log4j 的叫法是输出源。

一个记录器可以有多个输出源。

一条log信息如果可被这个记录器处理,则该记录器会把这条信息送往每个它所拥有的输出源,以及层次结构中更高级的输出源。

例如,根记录器以控制台作为输出源,则所有可被纪录的日志都将至少打印到控制台。

配置日志信息输出源,其语法如下:log4j.appender.appenderName = .of.appender.classlog4j.appender.appenderName.option1 = value1 …log4j.appender.appenderName.option = valueNLog4j提供的appender有以下几种:org.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的) org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)org.apache.log4j.SocketAppender (Socket)org.apache.log4j.NtEventLogAppender (NT的Event Log)org.apache.log4j.JMSAppender (电子邮件)2.1.3.配置日志信息的格式(layout)其语法如下:yout = yout.classyout.option1 = value1 …yout.option = valueN其中,Log4j提供的layout包含以下几种:org.apache.log4j.HTMLLayout(以HTML表格形式布局)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)如果采用了PatternLayout, 则Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:%m 输出代码中指定的消息%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

举例:Testlog4.main(TestLog4.java:10)2.1.4.配置文件示例下面是一个完整的Log4j配置文件,这个配置文件指定了两个输出源CONSOLE和R。

前者把日志信息输出到控制台,后者是一个轮转日志文件。

最大的文件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把example.log重命名为example.log.1,然后重建一个新的example.log文件,依次轮转。

log4j.rootLogger=debug, CONSOLE, Rlog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=INFOlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.Encoding=GBKyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize=2048KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%p %t %c - %m%n# 只记录日志级别为error以上的日志信息log4j.appender.ERROR=org.apache.log4j.RollingFileAppenderlog4j.appender.ERROR.Threshold=ERRORlog4j.appender.ERROR.File= exampleerror.loglog4j.appender.ERROR.Append=truelog4j.appender.ERROR.Encoding=GBKlog4j.appender.ERROR.MaxFileSize=2048KBlog4j.appender.ERROR.MaxBackupIndex=1yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n#指定自定义记录器(比如DAO独立记录文件)mons.dao=info,out,dao#不再附加累积的输出源log4j.additivity. mons.dao=falselog4j.appender.out=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%p %t %c - %m%n#专门记录dao层的日志log4j.appender.dao=org.apache.log4j.RollingFileAppenderlog4j.appender. dao.File=exampledao.loglog4j.appender. dao.MaxFileSize=2048KB# Keep one backup filelog4j.appender.dao.MaxBackupIndex=1yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%p %t %c - %m%n2.2日志调用2.2.1获得记录器其语法为:public static Logger getLogger( String name)通过指定的名字获得记录器,Name一般取本类的名字,比如:static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName()) static Logger logger = Logger.getLogger ( ServerWithLog4j.class)同时还有其它获取记录器方法:Log log = LogFactory.getLog(TestLog4j.class);Log log = LogFactory.getLog(TestLog4j.class.getName());Category cat = Category.getInstance(TestLog4j.class.getName());2.2.2、读取配置文件配置Log4j环境,其语法为://自动快速地使用缺省Log4j环境。

合集下载

log4j自定义日志等级

log4j自定义日志等级

log4j自定义日志等级log4j自定义日志等级,步骤如下1.继承logj的level类,定义一个自己的日志级别:public class TestLevel extends Level { public TestLevel(int level, String levelStr, int syslogEquivalent) {super(level, levelStr, syslogEquivalent);}}2.继承Filter类,定义一个自己的filter:public class MyLogFiter extends Filter {/*** Do we return ACCEPT when a match occurs. Default is* <code>false</code>, so that later filters get run by default */boolean acceptOnMatch = false;int levelMin;int levelMax;/*** Return the decision of this filter.*/@Overridepublic int decide(LoggingEvent event) {int inputLevel = event.getLevel().toInt();if (inputLevel >= levelMin && inputLevel <= levelMax) {return Filter.ACCEPT;}return Filter.DENY;}/*** Get the value of the <code>LevelMax</code> option.*/public int getLevelMax() {return levelMax;}/*** Get the value of the <code>LevelMin</code> option.*/public int getLevelMin() {return levelMin;}/*** Get the value of the <code>AcceptOnMatch</code> option.*/public boolean getAcceptOnMatch() {return acceptOnMatch;}/*** Set the <code>LevelMax</code> option.*/public void setLevelMax(int levelMax) {this.levelMax = levelMax;}/*** Set the <code>LevelMin</code> option.*/public void setLevelMin(int levelMin) {this.levelMin = levelMin;}* Set the <code>AcceptOnMatch</code> option.*/public void setAcceptOnMatch(boolean acceptOnMatch) { this.acceptOnMatch = acceptOnMatch;}}3.在不侵入log4j源代码的情况下,对log4j的logger输出进行封装,并且添加自己定义的级别的输出方法:public class Logger {private final static int priority = 40100;private final org.apache.log4j.Logger logger;private static final String FQCN;//以下为自定义的日志级别public static final Level PAY_LEVEL = new TestLevel(priority, “TEST”, SyslogAppender.LOG_LOCAL0);static {FQCN = Logger.class.getName();}private Logger(Class<?> clazz) {logger = org.apache.log4j.Logger.getLogger(clazz);}private Logger() {logger = org.apache.log4j.Logger.getRootLogger();}public static Logger getLogger(Class<?> clazz) {return new Logger(clazz);}public static Logger getRootLogger() {return new Logger();public void test(Object message) {forcedLog(logger, PAY_LEVEL, message);}public void test(Object message, Throwable t) {forcedLog(logger, PAY_LEVEL, message, t);}private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message) {logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, null));}private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message, Throwable t) {logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, t));}}4.修改log4j的xml配置文件,添加自定义的appender:<appender name=”TEST”><param name=”File” value=”/var/Test.log”/><param name=”Append” value=”true”/><param name=”DatePattern” value=”‘.’yyyy-MM-dd-HH”/><param name=”BufferedIO” value=”true”/><!– 8K为一个写单元–> <param name=”BufferSize” value=”8192″/> <layout><param name=”ConversionPattern”value=”%d{yyyy-MM-dd HH:mm:ss}\t%F\t%L\t%M\t%m%n”/></layout><filter class=”MyLogFiter”><param name=”LevelMin” value=”40100″/><param name=”LevelMax” value=”40100″/></filter></appender>5.在需要输出日志的地方使用封装的logger输出方法即可:logger.test(“hahaha,test”);。

Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender

Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender

Log4j的扩展-⽀持设置最⼤⽇志数量的DailyRollingFileAppenderLog4j现在已经被⼤家熟知了,所有细节都可以在⽹上查到,Log4j⽀持Appender,其中DailyRollingFileAppender是被经常⽤到的Appender之⼀。

在讨论今天的主题之前,我们先看下另外⼀个Appender。

最常⽤的Appender——RollingFileAppender下⾯是RollingFileAppender的⼀个Log4j配置样例(配置1):log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.Threshold=DEBUGlog4j.appender.R.File=test.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%nlog4j.appender.R.MaxFileSize=20MBlog4j.appender.R.MaxBackupIndex=10RollingFileAppender使⽤MaxFileSize设置⼀个⽇志⽂件的最⼤⼤⼩,当产⽣多个⽇志时,会在⽇志名称后⾯加上".1"、".2"、……这样的后缀,我们可以看到RollingFileAppender有个属性MaxBackupIndex,这个属性通过限制⽇志⽂件名后缀".n"中的n⼤⼩来限制⽇志数量,⽐如上⾯MaxBackupIndex=10,其实最⼤⽇志数量为11。

我们知道这个有这个限制是很必要的,当我们的程序在服务器上运⾏时,随着时间的迁移,⽇志会越来越多,如果对⽇志数量没有限制,⽇志⼤⼩会越来越⼤,最后甚⾄占满整个硬盘。

log4j设置日志格式为UTF-8

log4j设置日志格式为UTF-8
ቤተ መጻሕፍቲ ባይዱ
网络错误400请刷新页面重试持续报错请尝试更换浏览器或网络环境
log4j设置日志格式为 UTF-8
想要log4j输出的日志文件的编码格式为UTF-8. 正常情况下只需要添加下述的代码即可:
log4j.appender.appender_name.Encoding=UTF-8
但是在spring与log4j集成时此种方式就失效了,没有深入探讨其原因,感觉应该是spring做了某些操作将此配置屏蔽掉了(如果有人知道原 因,请留言,谢谢)。 我采取的方式是不采用在web.xml中配置org.springframework.web.util.Log4jConfigListener的方式,在web启动时初始化log4j配置。 唯一的问题是通过web.xml配置的方式可以配置webAppRootKey,从而可以在log4j.properties中指定相对路径。 这个的解决方式是,在初始化log4j配置之前,手动设置:System.setProperty("myapp.root", webRootPath),然后在log4j.properties中 ${myapp.root}引用。

Log4j配置日志打印时区的实现方法

Log4j配置日志打印时区的实现方法

Log4j配置⽇志打印时区的实现⽅法
og4j版本:2.8.1
开发桌⾯程序时遇到⼀个问题,idea中⽇志时间和CMD中jar包运⾏⽇志时间都正常,使⽤exe4j打成的exe运⾏后,⽇志的时间都要少8个⼩时,时区变得不对了
⽹上找了⼀圈发现没有类似问题的解决办法,后来终于在stack overflow 中找到相应的解决办法
在log4j2.xml配置⽂件中,进⾏如下配置即可
<!-- 输出⽇志格式 -->
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}{GMT+8} [%thread] %level [%C{1}:%L] - %msg%n"/>
貌似低版本log4j不⾏,没有验证
以上这篇Log4j 配置⽇志打印时区的实现⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

Log4j配置最全说明

Log4j配置最全说明

Log4j配置最全说明1. log4j 的配置文件Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是Java 特性文件 lg4j.properties (键 = 值)。

1.1. log4j configuration scripts in properties formatlg4j.properties 文件作为作为常用的配置文件的方法如下:配置根 LoggerLogger 负责处理日志记录的大部分操作。

其语法为:log4j.rootLogger = [ level ] , appenderName, appenderName, … 其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。

Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、INFO 、 DEBUG 。

通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。

比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。

ALL: 打印所有的日志, OFF :关闭所有的日志输出。

appenderName 就是指定日志信息输出到哪个地方。

可同时指定多个输出目的地。

Appender配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。

其语法为:log4j.appender.appenderName =.of.appender.classlog4j.appender.appenderName.option1 = value1log4j.appender.appenderName.optionN = valueN其中, Log4j 提供的 appender 有以下几种:org.apache.log4j.ConsoleAppender (控制台),org.apache.log4j.FileAppender (文件),org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。

android log4j 用法

android log4j 用法

android log4j 用法Android Log4j 用法:详细步骤解析Log4j是一个功能强大且广泛用于Java程序的日志记录工具。

它提供了灵活的日志配置选项,允许开发人员根据应用程序的需求自定义日志输出。

在Android开发中,我们可以使用Log4j来记录应用程序的日志,以便更好地进行调试和故障排除。

本文将一步一步介绍如何在Android项目中使用Log4j,并对其用法进行详细解析。

第一步:引入Log4j库要使用Log4j,我们首先需要将其库文件添加到Android项目的依赖项中。

可以从Apache官方网站上下载Log4j的最新版本。

下载完成后,将其包含在项目的libs文件夹中。

接下来,在项目的build.gradle文件中添加以下依赖项:dependencies {implementation files('libs/log4j.jar')}这样,Log4j库就会被添加到项目中。

第二步:创建配置文件Log4j需要一个配置文件来定义日志输出的格式和目标。

我们可以在项目的res目录下创建一个名为log4j.properties的文件,并按照如下内容进行配置:# 设置根日志级别为DEBUGlog4j.rootLogger=DEBUG,stdout# 配置控制台输出log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%n# 配置文件输出log4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=/sdcard/app.loglog4j.appender.file.MaxFileSize=5MBlog4j.appender.file.MaxBackupIndex=4yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%n在上述配置文件中,我们首先设置了根日志级别为DEBUG,这意味着只有DEBUG级别及以上的日志才会被输出。

Mybatis的Log4j日志输出问题-以及有关日志的所有问题

Mybatis的Log4j⽇志输出问题-以及有关⽇志的所有问题使⽤Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)⽇志。

有些时候就不能。

⽆法输出⽇志的时候,⽆论怎么配置log4j,不管是properties的还是xml的,都不起作⽤。

有些时候,我们没做什么配置就能输出⽇志....这是⼀个让⽆数⼈烦躁的问题。

其实解决问题很容易(我过了这么久才解决,以前都⽤拦截器输出)。

这是⼀个普⼤喜奔的⽇⼦,让我们⼀起来看看如何解决mybatis的⽇志问题。

为什么说这个问题很容易解决呢?因为mybatis的⽂档写的很清楚。

为什么我们都没找到解决办法呢?因为即使看过⽂档的⼈,也未必去看Logging这⼀节。

但是这⼀节正是解决问题的关键。

已经等不及的⼩伙伴们可以直接去这⾥看⽂档:提醒最常⽤的⽅法不再这个链接中,但是这个⽂档提供了对log4j的详细配置。

本⽂下⾯的内容⼤部分是这个⽂档的Copy。

Mybatis内置的⽇志⼯⼚提供⽇志功能,具体的⽇志实现有以下⼏种⽅式:SLF4JApache Commons LoggingLog4j 2Log4jJDK logging具体选择哪个⽇志实现由MyBatis的内置⽇志⼯⼚确定。

它会使⽤最先找到的(按上⽂列举的顺序查找)。

如果⼀个都未找到,⽇志功能就会被禁⽤。

不少应⽤服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere,所以MyBatis会把它作为具体的⽇志实现。

记住这点⾮常重要。

这意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。

这种做法不免让⼈悲摧,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存在,按优先级Log4J⾃然就被忽略了!不过,如果你的应⽤部署在⼀个包含Commons Logging的环境,⽽你⼜想⽤其他的⽇志框架,你可以根据需要调⽤如下的某⼀⽅法:eSlf4jLogging();eLog4JLogging();eJdkLogging();eCommonsLogging();eStdOutLogging();如果的确需要调⽤以上的某个⽅法,请在调⽤所有其他MyBatis⽅法前调⽤它。

log4j动态日志级别调整

log4j动态⽇志级别调整1. 针对root logger的设置log4j.rootLogger=INFO, CONSOLELogger.getRootLogger().setLevel(org.apache.log4j.Level.DEBUG)2. 针对Appender的Appender设置log4j.appender.CONSOLE.Threshold=DEBUG((org.apache.log4j.ConsoleAppender)Logger.getRootLogger().getAppender("CONSOLE")).setThreshold(Priority.DEBUG)注意Appender的转型,⽤AppenderSkeleton 更好3. 针对包名设置的⽇志级别的调整.simonme.log4j.thread=ERRORLogger.getRootLogger().getLogger("org.simonme.log4j.thread").setLevel(org.apache.log4j.Level.DEBUG);另:Logger.getRootLogger().getCurrentCategories(); 能拿到所有logger对象只是已经是过时api了再另:级别⽆论如何设置,不会超过其⽗级别上⾯ 1 2 3 就是按⽗⼦顺序的排列的。

再另另:针对包名的⽇志级别配置 .simonme.log4j.thread=ERROR 是在什么地⽅处理了这个逻辑使之⽣效的请查看org.apache.log4j.Hierarchy.updateParents(Logger)⽅法//System.out.println("UpdateParents called for " + name);// if name = "w.x.y.z", loop thourgh "w.x.y", "w.x" and "w", but not "w.x.y.z"for(int i = stIndexOf('.', length-1); i >= 0;i = stIndexOf('.', i-1)) {String substr = name.substring(0, i);//System.out.println("Updating parent : " + substr);CategoryKey key = new CategoryKey(substr); // simple constructorObject o = ht.get(key);// Create a provision node for a future parent.if(o == null) {//System.out.println("No parent "+substr+" found. Creating ProvisionNode.");ProvisionNode pn = new ProvisionNode(cat);ht.put(key, pn);} else if(o instanceof Category) {parentFound = true;cat.parent = (Category) o;//System.out.println("Linking " + + " -> " + ((Category) o).name);break; // no need to update the ancestors of the closest ancestor} else if(o instanceof ProvisionNode) {((ProvisionNode) o).addElement(cat);} else {Exception e = new IllegalStateException("unexpected object type " +o.getClass() + " in ht.");e.printStackTrace();}}再另另另:性能如何org.apache.log4j.Category.getEffectiveLevel() for(Category c = this; c != null; c=c.parent) {if(c.level != null)return c.level;}是向⽗级别查找的办法,所以性能⽆⼤影响。

Mybatis日志配置文件

Mybatis⽇志配置⽂件log4j.properties#log4j⽇志级别如下:#A:off 最⾼等级,⽤于关闭所有⽇志记录。

#B:fatal 指出每个严重的错误事件将会导致应⽤程序的退出。

#C:error 指出虽然发⽣错误事件,但仍然不影响系统的继续运⾏。

#D:warn 表明会出现潜在的错误情形。

#E:info ⼀般和在粗粒度级别上,强调应⽤程序的运⾏全程。

#F:debug ⼀般⽤于细粒度级别上,对调试应⽤程序⾮常有帮助。

#G:all 最低等级,⽤于打开所有⽇志记录。

#但log4j只建议使⽤4个级别,优先级从⾼到低分别是:#error>warn>info>debuglog4j.rootLogger =debug,systemOut,logFile#输出到控制台log4j.appender.systemOut = org.apache.log4j.ConsoleAppenderyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%nlog4j.appender.systemOut.Target = System.out#输出到⽂件log4j.appender.logFile = org.apache.log4j.FileAppenderyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%nlog4j.appender.logFile.File = log/log4j.loglog4j.appender.logFile.Encoding = UTF-8#将⽇志输记录到MySQL数据库#log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender#yout = org.apache.log4j.PatternLayout#log4j.appender.logDB.Driver = com.mysql.jdbc.Driver#log4j.appender.logDB.URL = jdbc:mysql://localhost:3306/log4j?characterEncoding=utf-8#er = root#log4j.appender.logDB.Password = root#log4j.appender.logDB.Sql = INSERT INTO t_log4j(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values('mybatis','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')⽇志⽂件输出⽅式有三种:输出到控制台,输出到⽂件,输出到数据库。

idea log4j插件用法

1. 什么是Log4j插件Log4j是一个开源的日志记录框架,广泛应用于Java项目中。

Log4j插件是用于在开发过程中方便地使用Log4j框架的工具,能够帮助开发人员快速配置和管理日志记录功能。

2. Log4j插件的安装在使用Log4j插件之前,首先需要在开发环境中安装Log4j插件。

可以通过Maven或手动下载Jar包的方式将Log4j插件导入到项目中,然后在项目配置文件中声明Log4j插件的依赖关系。

3. Log4j插件的配置在项目中成功导入Log4j插件后,需要对插件进行配置。

首先需要创建一个Log4j配置文件(通常命名为log4j.properties或log4j.xml),在配置文件中指定日志记录的格式、输出目标、日志级别等参数。

4. 使用Log4j插件记录日志配置完成后,开发人员可以通过调用Log4j插件提供的API来记录日志。

开发人员可以在代码中插入日志记录语句,指定日志的级别(如DEBUG、INFO、WARN、ERROR等),以及日志的内容。

通过Log4j插件记录的日志可以输出到控制台、文件、数据库等不同的目标。

5. Log4j插件的优点Log4j插件提供了丰富的日志记录功能,可以根据需要灵活地配置日志记录的方式和输出目标。

Log4j插件具有较高的性能和稳定性,适用于各种规模的项目。

另外,Log4j插件支持多种日志级别,开发人员可以根据实际需要精细地控制日志的记录和输出。

6. Log4j插件的注意事项在使用Log4j插件的过程中,需要注意配置文件的正确指定和日志记录语句的合理使用。

对于不同的项目和需求,需要仔细选择适合的日志记录方式和输出目标,以便保证日志记录的准确性和便捷性。

7. 结语Log4j插件是一个优秀的日志记录工具,能够帮助开发人员轻松地实现日志记录的功能。

通过仔细的配置和合理的使用,开发人员可以充分发挥Log4j插件的优势,为项目提供有效的日志管理和追踪功能。

希望本文对大家了解Log4j插件的用法有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档