log4j 日志记录
文章分类:Java编程
Log4j由三个重要的组件构成:日志记录的优先级,日志记录的输出目的地,日志记录的输出格式。
日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目
的地 指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
写配置文件 (log4j.properties)
#配置文件
log4j.rootLogger=INFO, A1, A2
#setting for appender A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
#setting for appender A2
log4j.appender. A2=org.apache.log4j.RollingFileAppender
log4j.appender. A2.File=example.log
log4j.appender. A2.MaxFileSize=100KB
log4j.appender. A2.MaxBackupIndex=1
log4j.appender. A2.layout=org.apache.log4j.PatternLayout
log4j.appender. A2.layout.ConversionPattern=%p %t %c - %m%n
注意:其中的log4j.appender必须都为小写
注释:
1.配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
1)配置子Logger,其语法为
log4j.logger.[XXX].[XXX].[XXXX]..=[ level ] , appenderName, appenderName, …
XXX默认情况为项目包名,否则将不出现打印
默认情况下,子Loger同时会在父Logger输入
若想只在子Loger输出,只需加log4j.additivity.[XXX].[XXX].[XXXX]..=false
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只
使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中
相应级别的日志信息的开关。指定输出只显示比该级别以上的信息,所有比该级别低的信息都不会被显示。比如在这里定义了
INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
2.配置日志信息输出目的地Appender,其语法为
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
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:指定可以产生的滚动文件的最大数。
3.配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN
其中,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
4.当layout为PatternLayout时,ConversionPattern的格式有下面选项:
%m%n: 表示消息的内容
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
5.为不同的 Appender 设置日志输出级别
通常所有级别的输出都是放在一个文件里的,如果只需要记录某一类信息,只需在配置文件中修改Appender的Threshold 就能实现,例如log4j.appender.D.Threshold=DEBUG ## 输出DEBUG级别以上的日志
6.错误日志发送email
1) 打开log4j.properties文件
2) rootLogger加上一个Appender, 即MAIL, 如log4j.rootLogger=ERROR,A1,MAIL
3) 配置Appender信息,在文件的末尾加上以下部分
# Configuration for receiving e-mails when ERROR messages occur.
#自定义的Appender
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#日志的错误级别
log4j.appender.MAIL.Threshold=ERROR
#缓存文件大小,日志达到512K时发送Email
log4j.appender.MAIL.BufferSize=512
#发件人
log4j.appender.MAIL.From=test@163.com
#发送邮件的服务器
log4j.appender.MAIL.SMTPHost=smtp.163.com
#邮件的标题
log4j.appender.MAIL.Subject=Log4J Message
#日志邮件的接收者
log4j.appender.MAIL.To=test@163.com
#日志PatternLayout
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#日志的格式
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
分享到:
相关推荐
《web.xml配置归纳》 在Java Web开发中,`web.xml`是应用的部署描述符,它是应用程序配置的核心,用于定义各种组件、过滤器、监听器等。以下是一些关键配置点的归纳: 1. **Spring上下文配置** 当我们需要改变`...
- **httpd.conf**:为了保持配置文件的整洁性,将mod_jk模块的相关配置放置在一个单独的文件`mod_jk.conf`中,并在`httpd.conf`中添加一行`Include D:\server\Apache2\conf\mod_jk.conf`。 ##### 6. 配置mod_jk....
- **log4j.properties**:日志配置文件,控制日志输出格式和级别。 ##### 3.2 基本前提条件 - **硬件要求**:推荐最低硬件配置,以确保 HBase 能够稳定运行。 - **软件依赖**:列出运行 HBase 所必需的软件包和版本...
根据提供的文件信息,我们可以归纳出一系列与Java学习相关的网站及工具资源。虽然原文中的部分信息较为混乱且不易理解,但可以从中提炼出有关Java开发工具、框架以及在线资源的重要知识点。 ### Java学习资源概述 ...
内容概要:本文详细介绍了如何使用C#开发一个SMT贴片机的轨迹导入程序,该程序能够解析CAD设计的DXF文件并将其中的轨迹转换为适用于SMT设备的G代码。主要内容涵盖DXF文件的读取与解析、LWPOLYLINE的提取、坐标转换、G代码生成以及保存。此外,文中还探讨了一些实际应用中的注意事项,如坐标系转换、插补算法的选择和错误处理方法。通过具体的代码示例展示了如何利用netDxf库简化DXF文件的操作,并提供了路径优化和Z轴控制的具体实现。 适合人群:从事SMT行业或相关领域的工程师和技术人员,尤其是有一定C#编程基础并对数控编程感兴趣的开发者。 使用场景及目标:①将CAD设计的DXF文件高效转化为SMT设备所需的G代码;②确保生成的G代码能够在实际设备上正确执行,提高生产效率和准确性;③解决坐标系转换、插补算法选择等问题,增强程序的鲁棒性和实用性。 其他说明:建议在真实设备运行前先用CAM软件进行仿真测试,同时注意处理好文件读取和数值转换中的异常情况。
内容概要:本文详细介绍了基于西门子S7-1200 PLC的物流仓储自动化系统,涵盖了硬件架构、通信处理、运动控制算法、触摸屏交互等多个方面的内容。硬件上,采用S7-1217C处理器、G120变频器、ET200S远程站和激光测距传感器构建了一个精密的空间坐标定位体系。通信部分利用Profinet和RS485进行数据传输,并通过SCL和STL编写了多种实用的功能块,如急停处理、温漂补偿、路径优化等。运动控制方面,通过速度梯形图与S型曲线结合的方式实现高精度定位。触摸屏界面则通过WinCC Advanced实现报警记录和货位状态显示等功能。 适合人群:从事物流仓储自动化系统设计、开发和维护的技术人员,尤其是熟悉西门子PLC编程的工程师。 使用场景及目标:适用于需要高精度、高可靠性的物流仓储自动化项目的开发和调试。主要目标是提高系统的响应速度、定位精度和稳定性,确保设备能够长时间稳定运行。 其他说明:文中提供了大量实际代码片段和技术细节,帮助读者更好地理解和应用相关技术。此外,还分享了一些现场调试的经验和技巧,如温漂补偿、通信优化等。
新5
内容概要:本文详细介绍了如何利用MATLAB的Fuzzy工具箱实现驾驶员制动意图的识别。文中首先解释了模糊控制的基本概念及其在处理不确定性和模糊性方面的优势。随后,通过具体的MATLAB代码示例展示了如何构建模糊推理系统(FIS),包括定义输入输出变量、隶属函数以及规则库。此外,还讨论了实际应用中的优化措施,如调整隶属函数参数和引入多输入变量以提高系统的鲁棒性和准确性。最后,通过对比实验验证了模糊控制相比传统方法在响应时间和识别精度上的优越性。 适合人群:从事自动驾驶或智能辅助驾驶系统研究的技术人员,尤其是对模糊控制算法感兴趣的开发者。 使用场景及目标:适用于需要精确识别驾驶员制动意图的应用场合,如高级驾驶辅助系统(ADAS)、自动驾驶车辆的安全控制模块等。主要目标是提高系统的智能化水平,增强行车安全性。 其他说明:文中提供的代码片段和实验数据有助于读者深入理解模糊控制的工作机制,并为实际项目开发提供参考。同时,强调了参数调整的重要性,指出模糊控制并非万能解决方案,需结合具体应用场景进行优化。
内容概要:本文详细介绍了三菱PLC QD75模块FB功能块在伺服电机控制中的应用。首先阐述了选择FB功能块的原因,即编程方式清晰明了,便于维护和修改。接着展示了关键代码及其分析,包括输入输出变量、中间变量、初始化、运动参数设置、当前位置监控、目标位置判断以及错误处理等方面的内容。文中还提供了多个实用技巧,如速度切换判断、状态监控、错误处理、调试方法等。此外,文章强调了这套程序的适用范围和借鉴意义,尤其适合初学者作为模板进行项目级开发。 适合人群:具备一定PLC编程基础,尤其是三菱PLC初学者和项目级开发者。 使用场景及目标:①帮助读者理解三菱PLC QD75模块FB功能块的工作原理;②提供一个成熟的伺服电机控制程序模板,供读者在实际项目中参考和改进;③提高程序的可维护性和可靠性。 其他说明:文章不仅提供了详细的代码示例和注释,还分享了许多实际应用中的经验和技巧,有助于读者更好地理解和应用这些知识。
少儿编程scratch项目源代码文件案例素材-恶魔的冒险 Level Devil.zip
少儿编程scratch项目源代码文件案例素材-鬼影斩.zip
Node-Webkit Javascript (NW.js)
内容概要:本文详细介绍了基于UDS(Unified Diagnostic Services)协议的Bootloader的设计与实现,涵盖其多协议支持(XCP、CCP、UDS)、AUTOSAR兼容性、多版本选择(ILLD和MCAL)、广泛硬件平台支持(如TC系列芯片)以及CAN FD的支持。文中不仅提供了上位机和下位机的代码示例,还展示了具体的测试用例,确保Bootloader的功能正确性和稳定性。此外,文章探讨了Bootloader在汽车电子和工业控制系统中的应用场景,强调了其重要性和灵活性。 适合人群:从事汽车电子、嵌入式系统开发的技术人员,尤其是那些需要深入了解Bootloader工作机制和实现细节的人群。 使用场景及目标:适用于需要开发或维护汽车电子控制单元(ECU)的团队,旨在提高系统的可靠性和性能。目标包括但不限于:实现高效的数据传输、确保诊断服务的准确性、优化刷写速度、增强系统的安全性等。 其他说明:文章提供了丰富的代码示例和技术细节,帮助读者更好地理解和应用基于UDS的Bootloader。同时,针对不同硬件平台和应用场景,给出了具体的配置建议和注意事项。
esp32串口接收tcp发送代码
少儿编程scratch项目源代码文件案例素材-蝗虫群怪 Boss 战.zip
少儿编程scratch项目源代码文件案例素材-放射性南瓜田.zip
少儿编程scratch项目源代码文件案例素材-格林奇 Boss 大战.zip
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
内容概要:本文详细介绍了使用MATLAB进行QPSK调制信号通过AWGN信道的误符号率(SER)和误比特率(BER)性能分析的方法。主要内容包括参数设置、随机比特流生成、Gray编码映射、AWGN信道建模、噪声功率计算、解调过程以及误码率统计。文中还讨论了一些常见的实现陷阱和技术细节,如Gray编码的正确实现、噪声方差的计算方法、信噪比转换等。通过仿真与理论值对比,展示了QPSK调制在不同信噪比下的性能表现。 适合人群:通信工程专业学生、通信系统开发者、MATLAB爱好者。 使用场景及目标:适用于希望深入了解QPSK调制原理及其在AWGN信道下的性能分析的研究人员和工程师。通过动手实践,可以掌握QPSK调制的基本原理、MATLAB编程技巧以及通信系统的性能评估方法。 其他说明:文中提供了详细的MATLAB代码片段,帮助读者更好地理解和实现QPSK调制的性能分析。此外,还提到了一些优化建议,如增加仿真次数以提高低信噪比区域的精度。
内容概要:本文详细介绍了六轴EtherCAT总线伺服涂布收卷机程序的实现过程。该系统通过六个伺服电机、变频器和编码器的配合,实现了动态测量频率、转速计算、频率换算与速度同步以及通讯控制等功能。文中提供了具体的代码示例,如Python、C/C++和ST语言代码片段,用于解释如何进行频率测量、转速换算、变频器频率设置和EtherCAT通讯控制。此外,还讨论了实际应用中的常见问题及其解决方案,如通讯延迟处理、异常处理和参数配置等。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是对EtherCAT总线技术和伺服控制系统有一定了解的人群。 使用场景及目标:适用于需要高精度同步控制的工业应用场景,如涂布工艺和收卷环节。目标是帮助读者理解和实现六轴EtherCAT总线伺服涂布收卷机系统的协同工作,提高生产效率和稳定性。 其他说明:文章不仅提供了详细的代码实现,还分享了许多实际调试经验和技巧,有助于读者更好地应对实际工程中的挑战。