log4j实现自定义日志级别

super_loverax 2013-11-14 09:22:04
我想请问一下,在开源log4j的文档里面说到。可以支持debug,info,warn,error等级别以及可以自定义级别,自定义级别其实就是它的priority不同,其它的类似。我想请教一下具体如何实现。

我的思路是:
先自定义一个日志级别的类,比如Serials,让它继承自level类,然后在日志对象里面添加相应的方法,传一个自定义的日志实例进去...

但是好像也没这么简单,如何不入侵log4j的源代码,只是对其包装一下,然后在log4j.properties中进行配置就可以生效的话,那就算成功了。比如我的日志级别Serials介于warn和error之间,那么配置成Serials的话,只有Serials和error生效这种的。请大侠们赐教哈。
...全文
2261 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_loverax 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 baohuan_love 的回复:
参考http://blog.csdn.net/baohuan_love/article/details/16115153
这个链接看过,不过还是无法实现配置生效。现在是要自爱log4j基础上进行扩展,有这个需求。还是很感谢咯。
syc1018575278 2013-11-14
  • 打赏
  • 举报
回复
正在学,只能......不明觉厉..........
  • 打赏
  • 举报
回复
其实你也可以不用log4j,可以自己封装一个工具类,类里定义一个静态成员作为输出等级,然后通过这个静态成员判断该输出什么内容。
super_loverax 2013-11-14
  • 打赏
  • 举报
回复
补充说明一下哈,我的配置是指配置新增加的日志级别,如果配置成log4j已有的日志级别还是生效的。 Notice.java

public class Notice extends Level
{    
    private static final long serialVersionUID = 1L;
    
    public Notice(int level, String levelStr, int syslogEquivalent)
    {
        super(level, levelStr, syslogEquivalent);
    }
}

public interface Levelface
{
    public static final Level NOTICE_LEVEL = new Notice(Priority.ERROR_INT-50, "notice", SyslogAppender.LOG_LOCAL0);
}
我在log4j.properties中的配置如下: log4j.rootLogger= NOTICE_LEVEL ,A1 但是却把debug info warn error等级别都打印出来了。
super_loverax 2013-11-14
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
class SeriousLevel extends Level 具体参考:http://www.blogjava.net/i369/articles/209979.html
你好,我之前也是类似这样的做法,但是在log4j中配置该级别的时候,好像没生效,没生效的意思是,它把所有的都打印出来了,而不是说只有比配置级别高(或者==)的级别打印出来。不过还是很感谢哈。
teemai 2013-11-14
  • 打赏
  • 举报
回复
class SeriousLevel extends Level 具体参考:http://www.blogjava.net/i369/articles/209979.html

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧