log4j日志文件配置

简介: log4j日志文件配置和使用

log4j已经停止更新了,官方建议升级到log4j2版本。但是如果你没有使用异步输出日志的话,其实提升不大。

添加maven依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<!--log4j扩展工具,非必须-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>apache-log4j-extras</artifactId>
    <version>1.2.17</version>
</dependency>

log4j.properties配置文件配置示例

INFO级别的配置

log4j.rootLogger = INFO, CONSOLE, I, E
### 输出到控制台 ###
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =  %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 输出INFO级别以上的日志到文件中 ###
log4j.appender.I = org.apache.log4j.RollingFileAppender
log4j.appender.I.File = ./logs/project_name/info/log_info.log
log4j.appender.I.Append = true
#单个日志大小500M
log4j.appender.I.MaxFileSize=500MB
#总共备份10GB
log4j.appender.I.MaxBackupIndex=20
## 输出INFO级别以上的日志
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
## 异常日志文件名
log4j.appender.E.File = ${catalina.home}/logs/project_name/error/log_error.log
log4j.appender.E.Append = true
#每半天生成一个日志文件
log4j.appender.E.DatePattern = '.'yyyy-MM-dd-a
## 只输出ERROR级别以上的日志!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

DEBUG级别的日志配置

log4j.rootLogger = DEBUG, CONSOLE, D, I, E
### 输出到控制台
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =  %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 输出DEBUG级别以上的日志到文件中 仅测试时使用,正式部署请将这里的注释掉###
log4j.appender.D = org.apache.log4j.RollingFileAppender
#日志放到tomcat的bin目录下
log4j.appender.D.File = ./logs/project_name/debug/log_debug.log
#单个日志大小32M
log4j.appender.D.MaxFileSize=32MB
#总共备份64M
log4j.appender.D.MaxBackupIndex=2
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 输出INFO级别以上的日志到文件中 ###
log4j.appender.I = org.apache.log4j.RollingFileAppender
#日志放到tomcat的logs目录中
log4j.appender.I.File = ../logs/project_name/info/log_info.log
log4j.appender.I.Append = true
#单个日志大小32M
log4j.appender.I.MaxFileSize=32MB
#总共备份512M
log4j.appender.I.MaxBackupIndex=16
## 输出INFO级别以上的日志
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 保存异常信息到单独文件
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
#日志放到tomcat的logs目录中
log4j.appender.E.File = ${catalina.home}/logs/project_name/error/log_error.log
log4j.appender.E.Append = true
#每天生成一个日志文件
log4j.appender.E.DatePattern = '.'yyyy-MM-dd
## 只输出ERROR级别以上的日志!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

额外的说明:这里使用了${catalina.home}来获取tomcat的路径,让日志输出到tomcat的logs文件目录下。

一些注意事项:低级别日志也会输出比它级别高的日志; 根据日期来设置日志的无法设置文件个数

补充:指定某个包下或类的日志级别

log4j.logger.包路径=日志级别
#例如:只打印spring的错误日志
 log4j.logger.org.springframework=ERROR

使用

import org.apache.log4j.Logger;

public class Demo {
    private static Logger logger = Logger.getLogger(Demo.class);

    public static void main(String[] args){
        logger.trace("------trace---追踪级别,一般不使用");
        logger.debug("------debug---调试级别");
        logger.info("-------info----普通级别");
        logger.warn("-------warn----警告级别");
        logger.error("------error---错误级别");
        logger.fatal("------fatal---严重级别,程序已经无法运行或应该停止的情况下");
        System.out.println("-------------------控制台输出--------------------------");
    }
}
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
17天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
73 1
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
22天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
26天前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
48 0
|
9天前
|
运维 安全 Ubuntu
`/var/log/syslog` 和 `/var/log/messages` 日志详解
`/var/log/syslog` 和 `/var/log/messages` 是Linux系统的日志文件,分别在Debian和Red Hat系发行版中记录系统事件和错误。它们包含时间戳、日志级别、PID及消息内容,由`rsyslog`等守护进程管理。常用命令如`tail`和`grep`用于查看和搜索日志。日志级别从低到高包括`debug`到`emerg`,表示不同严重程度的信息。注意保护日志文件的安全,防止未授权访问,并定期使用`logrotate`进行文件轮转以管理磁盘空间。
19 1
|
10天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
23 2
|
10天前
|
Ubuntu Linux 网络安全
/var/log/auth.log日志详解
`/var/log/auth.log`是Linux(尤其是Debian系如Ubuntu)记录身份验证和授权事件的日志文件,包括登录尝试(成功或失败)、SSH活动、sudo使用和PAM模块的操作。登录失败、SSH连接、sudo命令及其它认证活动都会在此记录。查看此日志通常需root权限,可使用`tail`、`less`或`grep`命令。文件内容可能因发行版和配置而异。例如,`sudo tail /var/log/auth.log`显示最后几行,`sudo grep &quot;failed password&quot; /var/log/auth.log`搜索失败密码尝试。
39 8
|
23天前
|
监控 Java 测试技术
日志框架到底是Logback 还是 Log4j2
日志框架到底是Logback 还是 Log4j2
17 0
|
24天前
|
XML 运维 监控
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
62 0