Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何为log4j消息添加前缀(在对象级别)

如何为log4j消息添加前缀(在对象级别)
EN

Stack Overflow用户
提问于 2013-05-23 20:10:47
回答 5查看 10K关注 0票数 8

我使用log4j2,我想在我的所有消息中添加一个前缀。这个前缀被传递给构造函数参数,它依赖于类的实例。因此,我们处于对象级别(而不是类或线程)。

例如,我有一个像new A(152)一样实例化的A类,所以当我在这个类上使用log.error("message")时,152:就写在消息之前。对于new A(155),将改为显示155:

谢谢你的帮忙

EN

回答 5

Stack Overflow用户

发布于 2013-05-23 20:18:10

使用MDC来实现这一点

在你的构造函数中放入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 MDC.put("prefix", yourvalue);

在您的XML中,就像这样在pattern中使用它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      %X{prefix}
票数 7
EN

Stack Overflow用户

发布于 2013-05-23 20:23:44

根据比尔·克拉尔的回答:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LogWrapper
{
    private Logger log;
    private String prefix;

    public LogWrapper(Logger log, String prefix) {
        this.log = log;
        this.prefix = prefix;
    }

    public void error(String msg)
    {
        log.error(prefix + ": " + msg);
    }
}

然后在类中设置为实例变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyClass {
    private LogWrapper log;

    public MyClass(int prefix) {
        log = new LogWrapper(Logger.getLogger(this.getClass()), String.valueOf(prefix));

        // then log away
        log.error("Test");
    }
}
票数 5
EN

Stack Overflow用户

发布于 2014-08-25 18:13:16

这里有一个简单的变通办法:您可以使用方法对字符串进行包装,该方法向字符串添加前缀,并将连接后的字符串返回给error方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class A {
    private static final Logger LOG = LogManager.getLogger();

    final int index;

    public A(int index) {
        this.index = index;
    }

    public static void f(String message) {
        return String.valueOf(index) + ": ";
    }

    public void method() {

        // ...

        LOG.error(f("message"));

    }

}

优势:

  • Simple
  • You可以在一个class/method
  • You中记录带前缀和不带前缀的消息不需要在log4j2 configuration

中永久添加像%X{prefix}这样的内容

缺点:

  • 如果要添加前缀

,则必须始终使用包装器方法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16723016

复制
相关文章
Confluence 6 log4j 日志级别
有 2 个方法能够对 Confluence 的日志输出进行调整,相关的方法描述在 log4j Logging Levels 中。
HoneyMoose
2019/01/30
5000
Log4j 2.0在开发中的高级使用详解—默认级别(二)
Log4j 经过几年的发展之后,终于迎来了它的姊妹版本Log4j 2.0 。在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。重大的升级必须带来重大的特性。对于2.0的颠覆性特性,我们将在之后一一讲解。今天我们就来看它的特性之一,默认级别。
业余草
2019/01/21
8070
Log4j 2.0在开发中的高级使用详解—默认级别(二)
如何为MySQL主键添加字段?
今天有个同事问了个不常见的问题,就是修改主键字段,给既定的主键添加一个字段应该用什么操作。说实话,这类操作,一般是不会发生在线上的,因为线上的表的主键,通常情况下,会建议业务用自增id值,因为自增id值既满足了主键的唯一性,又可以防止过多的数据页分裂操作,而且它的范围比较广,占用的字节数量也比较少,是一个比较合适的主键角色。
AsiaYe
2021/11/09
6.8K0
JAVA基础(29) Log4j 日志级别
官方网址: http://logging.apache.org/log4j/1.2/ log4j是apache基金会的一个项目,日志记录器(Logger)是日志处理的核心组件,log4j具有7种级别(Level).
Java架构师必看
2021/06/10
4280
如何添加前缀和后缀?
例如:如果是数字100,我们需要变成为"自定义100自定义",那我们需要怎么样处理呢?
逍遥之
2020/03/23
1.8K0
gulp rev manifest 添加目录前缀
gulp-rev 生成的manifest默认为: "index.css": "index.css?v=04aff97a7b",   为避免同名文件覆盖版本号,对替换的路径增加一级目录,如下 "css/
smy
2018/04/03
1.4K0
Java对象级别与类级别的同步锁
Java synchronized 关键字 可以将一个代码块或一个方法标记为同步代码块。同步代码块是指同一时间只能有一个线程执行的代码,并且执行该代码的线程持有同步锁。synchronized关键字可以作用于
字母哥博客
2021/04/28
1.4K0
Java对象级别与类级别的同步锁
JavaScript 覆盖对象字段级别
下列的代码可以实现a和b两个对象进行覆盖合并,不同于object.asgin 会覆盖。下列的代码只会字段级覆盖。
小贝壳
2020/09/09
8990
如何为mpvue项目添加底部tab
文章https://vip.kingdee.com/article/10314中已经实现快速创建一个mpvue项目,在这里以此为基础实现如何添加底部tab。 一.参考项目实例
honey缘木鱼
2019/03/04
7780
如何为mpvue项目添加底部tab
Log4j官方文档翻译(六、日志的级别)
org.apache.log4j.Level 类提供了下面几种日志级别,你也可以通过继承这些类,自定义级别 ALL 所有日志级别都包括 DEBUG 指定信息事件的粒度是DEBUG,在调试应用的时候会有帮助 ERROR 指定错误事件,并且这些事件还会保证应用继续运行 FATAL 指定严重的错误事件,该事件会导致应用暂停 INFO 指定信息消息,强调应用粗粒度的运行情况 OFF 最高等级,相当与关闭了日志 TRACE 指定比DEBUG更细粒度的调试日志 WARN 输出具有潜在风险的信息 如何使用不同的级别 lo
用户1154259
2018/01/17
6690
VC2008中如何为MFC应用程序添加和删除消息响应函数
      最近重温《MFC Windows应用程序设计》第二版这本书,里面的代码全部是使用VC6.0写的,我Win7下安装的是VS2008开发环境。
ccf19881030
2019/04/23
1.9K0
VC2008中如何为MFC应用程序添加和删除消息响应函数
如何为 Gradle 的 KTS 脚本添加扩展?
现在我们的 Gradle 脚本都迁移到 KTS 了。接下来我们要考虑的问题是,能不能添加一些好用的扩展,方面后续脚本的编写?
bennyhuo
2021/05/14
2.2K0
Next 项目路径添加指定的访问前缀
开发多个项目的时候,我们希望能通过指定的前缀路径去访问不同的项目。比如,通过前缀 /projectA/ 去访问项目 A;通过前缀 /projectB/ 去访问项目 B。我们应该怎么设置呢?
Jimmy_is_jimmy
2023/03/09
1.5K0
如何为Hue添加自定义Banner
在用户使用Hue时,如果需要在Hue界面设置一些提示等信息(如:“Hue用户申请及权限放通,请联系xxx”)时。那这是我们可以通过配置在Hue界面添加该提示信息。
Fayson
2018/10/23
8840
如何为Hue添加自定义Banner
[更正视频] 如何为 Gradle 的 KTS 脚本添加扩展?
(抱歉各位,之前发布的内容当中视频嵌入成“迁移 KTS”那一节的视频了,这次重新发布,更正视频内容,感谢大家的支持!)
bennyhuo
2021/05/14
1.4K0
如何为 Nginx 添加一个模块?
这篇文章发布于2013年,介绍如何为nginx添加模块,由于时间久远可能有些内容已经过时,不过"静态添加模块"方法仍然可以使用(从1.9.11版本开始支持load_module动态加载模块),文中的示例为nginx添加 stub_status模块,这个模块用于查看nginx的基本状态信息,对于运维人员来说很有用,建议掌握使用方法。
用户1560186
2019/11/19
1.2K0
Angular 项目路径添加指定的访问前缀
开发多个项目的时候,我们希望能通过指定的前缀路径去访问不同的项目。比如,通过前缀 /projectA/ 去访问项目 A;通过前缀 /projectB/ 去访问项目 B。我们应该怎么设置呢?
Jimmy_is_jimmy
2023/03/09
1.3K0
SEO人员,如何为博客添加关键词?
如果你对SEO稍微有一定的了解,在创建自己博客之初,你可能早已想好,要为自有的博客添加什么类型的关键词。
蝙蝠侠IT
2020/11/23
5620
SEO人员,如何为博客添加关键词?
点击加载更多

相似问题

基于日志级别的缩进log4j消息

32

spring mvc log4j中为每条日志消息添加字符串前缀

017

Log4j显示级别不正确的消息

10

如何为路由动态添加前缀?

20

如何为Lua表添加前缀?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文