log4j.xml

Log4j Log for java 以什么样的格式,按照什么样的优先级,将日志输出到哪里?

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

如果同时配置log4j.xml和log4j.properties,则log4j.xml生效

配置文件 log4j.xml的介绍

与log4j.properties比较,大部分功能是一样的,可以查看https://blog.csdn.net/qq_30426943/article/details/106348335

这里主要记录log4j.xml可以,而log4j.properties不能实现的功能:

  • 可以过滤级别,无论谁引用这个appender,都只能拿到设置级别区间的日志

  • 控制日志的传播机制,比如,我想打印com.isoftstone下的日志为info,而com.isoftstone.dao下的日志为error,但是root下为debug;那么如果都设置好后会打印重复的日志,相对于om.isoftstone.dao来说会打印三条,那么我只想打印一条,则这时候就要取消传播机制; additivity="false"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<appender name="log.console" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{HH:mm:ss,SS} %-5p (%C{1}:%M) - %m%n"/>
		</layout>
		<!--过滤器设置输出的级别-->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 设置日志输出的最小级别 -->
            <param name="levelMin" value="WARN" />
            <!-- 设置日志输出的最大级别 -->
            <param name="levelMax" value="ERROR" />
            <!-- 设置日志输出的xxx,默认是false -->
            <param name="AcceptOnMatch" value="true" />
        </filter>
	</appender>
	<appender name="log.file" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="D://log33.log"/>
		<param name="Append" value="true"/>
		<param name="DatePattern" value="yyyy-MM-dd"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{HH:mm:ss,SS} %-5p (%C{1}:%M) - %m%n"/>
		</layout>
		<!--过滤器设置输出的级别-->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 设置日志输出的最小级别 -->
            <param name="levelMin" value="WARN" />
            <!-- 设置日志输出的最大级别 -->
            <param name="levelMax" value="ERROR" />
            <!-- 设置日志输出的xxx,默认是false -->
            <param name="AcceptOnMatch" value="true" />
        </filter>
	</appender>
	
	<!-- com.isoftstone包下的文件日志,级别为info 且根据name为log.console和 log.file两个appender输出-->
	<logger name="com.isoftstone" additivity="false">
		<level value="info"/>
		<appender-ref ref="log.console"/>
		<appender-ref ref="log.file"/>
	</logger>
	
	<!-- com.isoftstone.dao包下的文件日志,级别为error 且根据name为log.console和 log.file两个appender输出-->
	<logger name="com.isoftstone.dao" additivity="false">
		<level value="error"/>
		<appender-ref ref="log.console"/>
		<appender-ref ref="log.file"/>
	</logger>
	
	<!-- 默认配置,级别为debug 且根据name为log.console和 log.file两个appender输出-->
	<root>
		<level value="debug"/>
		<appender-ref ref="log.console"/>
		<appender-ref ref="log.file"/>
	</root>
</log4j:configuration>

测试代码

package com.isoftstone;
import org.apache.log4j.Logger;
public class MyTest {
	private static final Logger LOGGER = Logger.getLogger(MyTest.class);

	public static void main(String[] args) {
		LOGGER.info("info.....");
		LOGGER.debug("debug.....");
		LOGGER.error("error.....");
		LOGGER.warn("warn.....");
		LOGGER.fatal("fatal...");
		LOGGER.error("报错信息:",new IllegalArgumentException("非法参数"));
	}
}

后台打印结果

测试代码

package com.isoftstone.dao;
import org.apache.log4j.Logger;

public class UserDao {
	private static final Logger LOGGER = Logger.getLogger(UserDao.class);
	public static void main(String[] args) {
		int age = 10;
		try {
			LOGGER.debug("1111");
			age = 10/0;
			LOGGER.debug("2222");
		} catch (Exception e) {
			//e.printStackTrace();
			LOGGER.error(e.getMessage(),e.getCause());
			//throw new XXX   这里抛出自定义的异常处理
		}
	}
}

后台打印结果

如果是Slf4j

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
        <!-- <scope>test</scope> -->
    </dependency>
public class Log4jTest {
        private static final Logger logger = LoggerFactory.getLogger(Log4jTest.class);

        public static void main(String[] args) {
            logger.debug("debug");
            logger.warn("warm");
            logger.error("error");
        }
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱梦君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值