log4j日志输出规范
Log4j2的日志配置文件,log4j2.xml文件的配置(实现控制台输出,各级别分别文件。。。

Log4j2的⽇志配置⽂件,log4j2.xml⽂件的配置(实现控制台输出,各级别分别⽂件。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "/2002/xmlspec/dtd/2.10/xmlspec.dtd"><!-- status : 这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出 monitorInterval: Log4j能够⾃动检测修改配置⽂件和重新配置本⾝, 设置间隔秒数。
注:本配置⽂件的⽬标是将不同级别的⽇志输出到不同⽂件,最⼤2MB⼀个⽂件,⽂件数据达到最⼤值时,旧数据会被压缩并放进指定⽂件夹 --><Configuration status="WARN" monitorInterval="600"><Properties><!-- 配置⽇志⽂件输出⽬录,此配置将⽇志输出到tomcat根⽬录下的指定⽂件夹 --><Property name="LOG_HOME">${sys:catalina.home}/WebAppLogs/HHServices</Property></Properties><Appenders><!-- 优先级从⾼到低分别是 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL --><!-- 单词解释: Match:匹配 DENY:拒绝 Mismatch:不匹配 ACCEPT:接受 --><!-- DENY,⽇志将⽴即被抛弃不再经过其他过滤器; NEUTRAL,有序列表⾥的下个过滤器过接着处理⽇志; ACCEPT,⽇志会被⽴即处理,不再经过剩余过滤器。
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级别及以上的日志才会被输出。
JAVA中使用log4j及slf4j进行日志输出的方法详解

JAVA中使⽤log4j及slf4j进⾏⽇志输出的⽅法详解 JAVA中输出⽇志⽐较常⽤的是log4j,这⾥讲下log4j的配置和使⽤⽅法,以及slf4j的使⽤⽅法。
⼀、下载log4j的架包,并导⼊项⽬中,如下:⼆、创建log4j.properties配置⽂件1、log4j配置⽂件的位置:(1)如果是java project项⽬,则在项⽬的根⽬录下创建log4j.properties⽽不是在src⽬录下。
(2)如果是java web项⽬,则在src⽬录下创建log4j.properties配置⽂件,因为这个时候tomcat会去默认的加载这个配置⽂件,⽽不需要我们⼿动的加载log4j的配置⽂件。
log4j.properties配置内容如下:1 log4j.rootLogger=info,logTest2 log4j.appender.logTest=org.apache.log4j.DailyRollingFileAppender3 log4j.appender.logTest.File=/logs/LogTest/logTest.log4 log4j.appender.logTest.DatePattern='.'yyyy-MM-dd'.log'5 yout=org.apache.log4j.PatternLayout6 yout.ConversionPattern=[LogTestInfo] [%d][%c][%-5p]%m%n2、log4j配置项的说明:(1)第⼀⾏中rootLogger配置的是整个项⽬的⽇志输出,也可以只针对某⼀个模块进⾏⽇志输出,⽐如第⼀⾏配置成.logTest.project=info,logTest,则⽇志只输出项⽬路径com/logTest/project下的。
info为⽇志级别,可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。
log4j日志输出格式自定义

log4j⽇志输出格式⾃定义yout.ConversionPattern
类的⾃定义
1. #⾃定义样式
2. #%c 输出所属的类⽬,通常就是所在类的全名
3. #%C 输出Logger所在类的名称,通常就是所在类的全名
4. #%d 输出⽇志时间点的⽇期或时间,默认格式为ISO8601,也可以在其后指定格式,⽐如:
%d{yyy MMM dd HH:mm:ss , SSS},%d{ABSOLUTE},%d{DATE}
5. #%F 输出所在类的类名称,只有类名。
6. #%l 输出语句所在的⾏数,包括类名+⽅法名+⽂件名+⾏数
7. #%L 输出语句所在的⾏数,只输出数字
8. #%m 输出代码中指定的讯息,如log(message)中的message
9. #%M 输出⽅法名
10. #%p 输出⽇志级别,即DEBUG,INFO,WARN,ERROR,FATAL
11. #%r 输出⾃应⽤启动到输出该log信息耗费的毫秒数
12. #%t 输出产⽣该⽇志事件的线程名
13. #%n 输出⼀个回车换⾏符,Windows平台为“/r/n”,Unix平台为“/n”
14. #%% ⽤来输出百分号“%”
例如:
[%p] [%d{yyyy-MM-dd HH:mm:ss}][%t][%F-%L]%m%n
[%p] [%d{yyyy-MM-dd HH:mm:ss}][%l]%m%n。
日志输出规范

⽇志输出规范1、log4j⽇志参数说明yout.ConversionPattern=[%p][%l] %d{yyyy-MM-dd HH:mm:ss} %m%n格式输出修改成:yout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - [%p] - [%l] - [ %m ]%n时间-事件级别-打印⽇志的详细信息-消息内容p log事件的级别。
l log发⽣位置的详细描述,包括⽅法名、⽂件名及⾏号。
d 时间和⽇期的输出格式,例如:%d{yyyy MM dd HH:mm:ss,SS},可不带后⾯的⽇期格式字符。
m log事件的消息内容n 根据所运⾏的平台输出相应的⾏分隔字符。
2、在⼀个对象中通常只使⽤⼀个Logger对象,Logger应该是static final的,只有在少数需要在构造函数中传递logger的情况下才使⽤private final。
private static final org.slf4j.Logger logger =LoggerFactory.getLogger(TemperatureDetectionController.class);如果使⽤com.leelen.esafe.utils.Logger,则⽇志输出的具体类将不能体现。
之前写法:(TAG + ":" + JSON.toJSONString(cmds));调⽤LoggerUtil的类,并且要⼿动获取类名,拼接字符串才能显⽰具体的类名3.输出Exceptions的全部Throwable信息,因为logger.error(msg)和logger.error(msg,e.getMessage())这样的⽇志输出⽅法会丢失掉最重要的StackTrace信息。
try {throw new Exception("测试⽇志");}catch (Exception e){(e.getMessage());//错误("输⼊⽇志1",e.getMessage());//错误("输⼊⽇志2",e);//正确}4、不允许记录⽇志后⼜抛出异常,因为这样会多次记录⽇志,只允许记录⼀次⽇志。
日志打印会严重影响到性能

⽇志打印会严重影响到性能以前编程不喜欢对每个功能、重要的⽅法进⾏⽇志的格式化输出,即使要输出,也没按照规范进⾏输出。
前段时间,随着我们平台⽤户量不断增加,出现些问题。
当⽤户遇到问题,就给我们客服打电话。
然后客服毫⽆疑问就来找我们。
当我们接收到这样问题的时候,我们⾸先要定位是什么原因造成的。
当时就是因为⾃⼰⽅法中输出的⽇志很少,⽽且不规范,所以根本找不到具体原因,虽然最后问题解决了,但是花费很多不必要的时间。
那么我们怎样使⽤好⽇志这⼀利器呢?1.写好⽇志:我们先来看⼀下糟糕的⽇志打印:[java]1. @ResponseBody2. @RequestMapping(value = "unbind.do", method = RequestMethod.POST)3. public Object unbind(String bankId, String memberId) {4.5. if (StringUtils.isBlank(bankId) || StringUtils.isBlank(memberId)) {6. return new Result(false, "解绑参数不合法!");7. }8. try {9. authPayTwoService.unbind(bankId, memberId);10. } catch (AppException e) {11. ("认证⽀付2.0(unbind)失败:{}",e);12. return new Result(false, e.getMessage());13. } catch (Exception e) {14. ("认证⽀付2.0(unbind)]失败:{}", e);15. return new Result(false, "解绑银⾏卡失败,请重试");16. }17. return new Result(true, "解绑银⾏卡成功!");18. }上⾯代码是严格不符合规范的,每个公司都有⾃⼰的打印要求。
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插件的用法有所帮助。
log4j使用教程详解(怎么使用log4j2)

log4j使⽤教程详解(怎么使⽤log4j2)1. 去官⽅下载log4j 2,导⼊jar包,基本上你只需要导⼊下⾯两个jar包就可以了(xx是乱七⼋糟的版本号):log4j-core-xx.jarlog4j-api-xx.jar2. 导⼊到你的项⽬中:这个就不说了。
3. 开始使⽤:我们知道,要在某个类中使⽤log4j记录⽇志,只需要申明下⾯的成员变量(其实不⼀定要是成员变量,只是为了⽅便调⽤⽽已)复制代码代码如下:private static Logger logger = LogManager.getLogger(MyApp.class.getName());⾥getLogger有⼀个参数指定的是这个logger的名称,这个名称在配置⽂件⾥⾯可是有需要的,这个待会⼉再说。
声明了Logger对象,我们就可以在代码中使⽤他了。
4. ⽇志的级别:我们现在要调⽤logger的⽅法,不过在这个Logger对象中,有很多⽅法,所以要先了解log4j的⽇志级别,log4j规定了默认的⼏个级别:trace<debug<info<warn<error<fatal等。
这⾥要说明⼀下:1)级别之间是包含的关系,意思是如果你设置⽇志级别是trace,则⼤于等于这个级别的⽇志都会输出。
2)基本上默认的级别没多⼤区别,就是⼀个默认的设定。
你可以通过它的API⾃⼰定义级别。
你也可以随意调⽤这些⽅法,不过你要在配置⽂件⾥⾯好好处理了,否则就起不到⽇志的作⽤了,⽽且也不易读,相当于⼀个规范,你要完全定义⼀套也可以,不⽤没多⼤必要。
3)这不同的级别的含义⼤家都很容易理解,这⾥就简单介绍⼀下:trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低⽇志级别不让他输出。
debug:调试么,我⼀般就只⽤这个作为最低级别,trace压根不⽤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Log4j 使用参考规范目录简介 (3)1. 概述 (3)2. 库主件 (3)3. 主要组件 (3)配置 (4)1. 相关配置文件 (4)2. 详细配置说明 (5)3. 输出方式 (5)4. 输出格式 (6)调用 (7)注意问题 (7)参考文档 (8)1. 概述程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。
例如,跟踪语句(trace),结构转储和常见的System.out.println或printf调试语句。
log4j 提供分级方法在程序中嵌入日志记录语句。
日志信息具有多种输出格式和多个输出级别。
使用一个专门的日志记录包,可以减轻对成千上万的System.out.println 语句的维护成本,因为日志记录可以通过配置脚本在运行时得以控制。
log4j 维护嵌入在程序代码中的日志记录语句。
通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。
五级输出,依次为DEBUG、INFO、WARN、ERROR、FATAL。
使用者可根据不同的需求,设定不同的输出级别,则得到不同级别的输出结果。
(在正式生产环境中,一般设定为 warn)2. 库主件目前log4j 2.0 版本需要JAVA5(logging services designed for Java 5 and later);1.3 版不被推荐使用,我们使用的最多的是1.2版。
目前可download 的是1.2.17 版。
下载地址:/dyn/closer.cgi/logging/log4j/库文件一般为名为log4j.jar, 使用时加入lib路径下。
3. 主要组件Log4j有三个主要组件:loggers、appenders和layouts。
这三个组件协同工作,使开发人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。
Logger:记录器;Logger 负责处理日志记录的大部分操作。
Appender:挂载点;Appender 负责控制日志记录操作的输出。
Layout:布局;Layout 负责格式化Appender 的输出。
1. 相关配置文件Log4j 的配置文件可以使用XML 文件和property 文件。
这里我们主要使用log4j.properties 配置文件,其比较直观,便于修改和维护。
下面是一个log4j 配置文件的例子:log4j.rootLogger=warn, logfile, errorLogger, consolelog4j.appender.console=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}].apache=warn.yaic.app=warnlog4j.appender.logfile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.logfile.File=/app/domains/Appdomain.logs/dysub_log.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorLogger.File=/app/domains/Appdomain.logs/dysub_error.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.appender.errorLogger.Threshold=errorlog4j.logger.yafaLogger=trace, yafaLogger, consolelog4j.appender.yafaLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.yafaLogger.File=/app/domains/Appdomain.logs/dysub_yafa.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.additivity.yafaLogger = falselog4j.logger.auditLogger=trace, auditLogger, consolelog4j.appender.auditLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.auditLogger.File=/app/domains/Appdomain.logs/dysub_audit.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}[%-3p] %t %C %L: %m%nlog4j.additivity.auditLogger = falselog4j.logger.quartzJobLogger=trace, quartzJobLoggerlog4j.appender.quartzJobLogger=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.quartzJobLogger.file=/app/domains/Appdomain.logs/quartzjob.logyout=org.apache.log4j.PatternLayoutyout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%nlog4j.additivity.quartzJobLogger = false.ibatis=warnlog4j.logger.java.sql.Connection=warnlog4j.logger.java.sql.Statement=warnlog4j.logger.java.sql.PreparedStatement=warn2. 详细配置说明使用者可设置五级输出,DEBUG、INFO、WARN、ERROR、FATAL,且有级别关系DEBUG<INFO<WARN<ERROR<FATAL, 只输出比设定级别高的log信息。
例如:如果设置级别为DEBUG,则输出所有五级信息;如设置级别为WARN,则只输出WARN,ERROR,FATAL三级信息,DEBUG 和INFO 不输出。
例如:log4j.rootLogger=warn, logfile, errorLogger, console设置apache的输出级别为warn,logfile, errorLogger, console为输出方式log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.logfile.File=/app/domains/Appdomain.logs/dysub_log.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-3p] %t %C %L: %m%n第一行,设置每天产生一个日志文件第二行,设置输出路径为/app/domains/Appdomain.logs/第三行,设置输出的格式为自定义格式(PatternLayout)输出第四行,设置输出格式的模式3. 输出方式Log4j 允许日志请求被输出到多个输出源。
用Log4j 的话说,一个输出源被称做一个Appender。
Appender 包括console(控制台)、files(文件)、GUI components(图形的组件)、remote socket servers(socket 服务)、JMS(java 信息服务)、NT Event Loggers(NT的事件日志)和remote UNIX Syslog daemons(远程UNIX 的后台日志服务)。
它也可以做到异步记录。
一个logger 可以设置超过一个的appender。
设置格式为:log4j.appender.stdout= DailyRollingFileAppender*输出方式:org.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)ConversionPattern参数说明%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows 平台为"\r\n",Unix 平台为"\n"%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
举%L 输出日志事件在代码中的位置,即行号4. 输出格式MDC内部使用了类似map的机制来存储信息,相对应的方法,MDC.put(key, value);在配置PatternLayout的时候使用:%x{key}来输出对应的value例如:String remoteAddr = request.getRemoteAddr();MDC.put("ip", remoteAddr);在log4j.properties文件中作如下的配置即可yout.ConversionPattern=-d{yyyy/MM/dd HH:mm:ss,SSS} [%X{ip}]-[%p]-[%c] %m%n如果在项目中有过滤器,你可以把获取ip 的方法直接定义在过滤器中,然后在配置文件中配置获取ip的显示就可以了根据以上ConversionPattern参数说明,我们规范定义的输出为%d{yyyy-MM-dd HH:mm:ss,SSS} [%X{ip}] -[%p]-[%c] (%L): %m%n输出结果:2016-10-12 {18:15:51,593] [10.1.100.100]{DEBUG} com.test.LookNode (66):This is a debug message...调用在程序中调用比较简单,在将log4j.jar 包引入后,即可使用了。