首页天道酬勤log4j配置日志输出路径,log4j日志滚动

log4j配置日志输出路径,log4j日志滚动

张世龙 05-12 10:10 120次浏览

分析和使用log4j日志框架教程日志很重要!!!

什么是log4j? log4j是一个Apache开源日志框架,可以满足项目中的日志记录需求。 log4j提供了简单的API调用、强大的日志格式定义和灵活的可扩展性。 用户可以自己定义Appender以满足日志输出的需要。 系统对记录日志的需求并不简单。

首先,要将日志持久化到磁盘,基本上可以将其保存到文件中。

其次,开发环境和生产环境中想要记录的日志不同。 很明显,开发环境日志记录更容易调试,但在生产环境中,大量日志更容易支撑服务器,因此我们只希望在生产环境中记录重要信息。

在某些情况下,System.out.println无法直接满足用户的需求,因此需要选择更强大的日志框架。 log4j是apache下一个著名的开源日志框架。

为什么需要日志? 异常场景

产品开发、系统运输(升级、日常管理等) )。

时间成本

快速高效

人工费

简化、低难度化

日志给谁用?

什么时候使用日志?

日志作为调试的工具,有助于观察软件运行时的内部结构和状态,帮助开发。 日志文件分析已成为大型软件项目中代码调试的主要手段

软件测试时

在软件测试过程中,可以通过调试和跟踪信息确认功能的实现原理和正确性。

软件运输时

已发布且正在运行的软件在某个功能发生异常时,无法像开发环境那样进行调试查找原因。 留给我们的只有日志系统。 网络管理设置下载问题等。

学习软件时

熟悉陌生软件系统时,日志提供了很多了解软件体系结构和实现逻辑的线索。

日志应该什么时候记录? 模块的启动和结束

为了知道模块是否成功加载或退出,必须监视模块的启动和退出。 例如,网管ICE服务的OnClientInitMe等函数。

用户登录和操作

必须记录用户何时登录、注销、执行了哪些操作,以方便审计。 例如,网络管理安全日志和操作日志。

异常信息

所有捕获异常的位置都必须记录异常内容日志,所有与系统软件预期不匹配的位置都必须记录日志。

软件的重要方法

必须记录软件系统的重要操作。 这是衡量系统正常运行的重要指标。 例如,业务/配置的添加/删除、激活、取消激活等重要操作。

日志有几个级别? 日志级别: offfatalerrorwarninfodebugtraceall。

通常为跟踪、调试、INFO、WARN、错误

TRACE :精细,可用于开发中的错误跟踪。

DEBUG:系统调试信息通常用于监视正在开发的系统的运行状况,在实际运行环境中不输出。

INFO:系统运行的重要信息,通常用于系统运行状况的监测。

WARN:报警提示,系统存在潜在问题,可能引起运行异常,此时未发生异常。

ERROR:系统错误信息需要及时处理和优化。

级别目的阶段对象级别ERROR警告执行用户正确/重度WARN警告执行/用户正确INFO说明使用运维简洁DEBUG详细开发调试维护/开发详细TRACE研究调试/学习开发/研发详细使用日志我应该注意什么?

粒度适中

写有意义的日志

按场景选择正确的日志级别

日志信息的可理解性

日志语言选择英语

*日志细节决定系统成败!*

我应该如何配置和使用log4j日志? 构成

项目资源配置文件夹中包含log4j.properties

###设置###log4j.rootLogger=debug,stdout,debugLog,infoLog, 错误日志###是控制台### 中输出信息log4j.appender.stdout=org.Apache.log4j.console appender log4j.appender.stdout.target=system.out log4j t .转换模式=[ %-5p ] % d { yyyy-mm-ddhh 3360 mm 3360 ss,SSS}method

og = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.debugLog.File =logs/debug/log.loglog4j.appender.debugLog.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'log4j.appender.debugLog.Append = truelog4j.appender.debugLog.Threshold = DEBUGlog4j.appender.debugLog.layout = org.apache.log4j.PatternLayoutlog4j.appender.debugLog.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 输出INFO 级别以上的日志 ###log4j.appender.infoLog = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.infoLog.File =logs/info/log.loglog4j.appender.infoLog.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'log4j.appender.infoLog.Append = truelog4j.appender.infoLog.Threshold = INFOlog4j.appender.infoLog.layout = org.apache.log4j.PatternLayoutlog4j.appender.infoLog.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 输出ERROR 级别以上的日志 ###log4j.appender.errorLog = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorLog.File =logs/error/log.loglog4j.appender.errorLog.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'log4j.appender.errorLog.Append = truelog4j.appender.errorLog.Threshold = ERRORlog4j.appender.errorLog.layout = org.apache.log4j.PatternLayoutlog4j.appender.errorLog.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

注意:log4j.properties文件一定存放在资源文件夹中,否则项目无法识别调用

设置输出内容

编写日志输出内容

import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class TestLog4j { private static Logger logger = LoggerFactory.getLogger(TestLog4j.class); public static void main(String[] args) { System.out.println("This is println message."); // 记录debug级别的信息 logger.debug("This is debug message."); // 记录info级别的信息 logger.info("This is info message."); // 记录error级别的信息 logger.error("This is error message."); }} 测试结果

项目结构

Maven依赖

<dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.32</version> </dependency> </dependencies>

运行结果

日志信息输出到控制台

日志信息保存到本地

​ logs文件夹系统会自动生成,无需新建

debug

error

info

源码获取

关注微信公众号:

Java烂笔头

对话框回复:

log4j

博主单纯需要阅读分享点赞、在看的鼓励支持,阳光无套路,完整源码分享!

, apache log4j,android最新版本是多少