Log4j自定义日志级别

本文介绍如何在Java项目中实现自定义的日志级别,以满足将特定跟踪日志写入独立文件的需求。内容包括自定义日志级别类的编写、log4j.xml配置文件设置以及执行结果的展示,确保其他日志输出不受影响。
摘要由CSDN通过智能技术生成

目的

由于要实现需求:将特定的跟踪日志写入单独的日志文件,且其他的日志输出不受影响。故需要实现一个自定义的日志级别并指定配置文件,将特定的日志信息输入特定文件。

实现

本代码基于log4j 1.2.8,并调试成功。配置文件基于log4j.xml

自定义日志级别类

package com.example.log4j.level;

import org.apache.log4j.Level;

public class MyLevel extends Level {
   

    public final static int TRACE_INT = 9000;

    /**
     * The <code>TRACE</code> Level designates fine-grained
     * informational events that are most useful to trace an
     * application.
     */
    final static public Level TRACE = new MyLevel(TRACE_INT, "TRACE", 7);

    /**
     * Instantiate a level object.
     *
     * @param level
     * @param levelStr
     * @param syslogEquivalent
     */
    protected MyLevel(int level, String levelStr, int syslogEquivalent) {
   
        super(level, levelStr, syslogEquivalent);
    }

    /**
     * Convert the string passed as argument to a level. If the
     * conversion fails, then this method returns {@link #DEBUG}.
     */
    public
    static Level toLevel(String sArg) {
   
        return (Level) toLevel(sArg, Level.DEBUG);
    }

    /**
     * Convert an integer passed as argument to a level. If the
     * conversion fails, then this method returns {@link #DEBUG}.
     */
    public
    static Level toLevel(int val) {
   
        return (Level) toLevel(val, Level.DEBUG);
    }

    /**
     * Convert an integer passed as argument to a level. If the
     * conversion fails, then this method returns the specified default.
     */
    public
    static Level toLevel(int val, Level defaultLevel) {
   
        switch (val) {
   
            case ALL_INT:
                return ALL;
            case TRACE_INT:
                return MyLevel.TRACE;
            case DEBUG_INT:
                return Level.DEBUG;
            case INFO_INT:
                return Level.INFO;
            case WARN_INT:
                return Level.WARN;
            case ERROR_INT:
                return Level.ERROR;
            case FATAL_INT:
                return Level.FATAL;
            case OFF_INT:
                return OFF;
            default:
                return defaultLevel;
        }
    }

    /**
     * Convert the string passed as argument to a level. If the
     * conversion fails, then this method returns the value of
     * <code>defaultLevel</code>.
     */
    public
    static Level toLevel(String sArg, Level defaultLevel) {
   
        if (sArg == null)
            return defaultLevel;

        String s = sArg.toUpperCase();

        if (s.equals("ALL")) return Level.ALL;
        if (s.equals("TRACE")) return MyLevel.TRACE;
        if (s.equals("DEBUG")) return Level.DEBUG;
        //if(s.equals("FINE")) return Level.FINE;
        if (s.equals("INFO")) return Level.INFO;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值