代码之家  ›  专栏  ›  技术社区  ›  Stephane Grenier

log4j显示包名称

  •  11
  • Stephane Grenier  · 技术社区  · 16 年前

    现在我的谈话模式是:

    log4j.appender.A1.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n
    

    我想做的是在类中包含完整的包名(%f:%l),但找不到 any config to do so in the docs . 我确实理解这样做会比较慢,但这只是为了调试,而不是在系统投入生产的时候。

    2 回复  |  直到 11 年前
        1
  •  23
  •   Michael Konietzka    16 年前

    也许我只是误解了你,但是%c会用包输出你的类。

    从参考文档中:

    %C

    用于输出完全合格的 发出 日志记录请求。这种转换 可以选择跟随说明符 通过精度说明符,这是 括号中的十进制常量。

    如果给出了精度说明符, 那么只有相应的数字 类的最右边的组件 将打印姓名。默认情况下 类名称完全输出 合格表格。

    例如,对于类名 “org.apache.xyz.someclass”,即 模式%c 1将输出“someClass”。

    生成调用方类时出现警告 信息很慢。因此,使用应该 除非执行速度 不是问题。

    更新: 在许多情况下,您也可以使用%c,如果您的类别是类名,它也将用package打印出完整的类。例如,当您在初始化日志时执行类似的操作时:

    private static final Log LOG = LogFactory.getLog(MyClazz.class);
    

    使用%c并不慢。

        2
  •  1
  •   teo van kot    11 年前

    使用 C{1} 是慢的。详情如下:

    根据以下内容 link 以下内容:

    用于输出发出调用方的完全限定类名 日志记录请求。此转换说明符可以是可选的 后跟精度说明符,即中的十进制常量 括号。如果给定了精度说明符,则只有 类名称最右侧的组件的相应数目将 印刷。默认情况下,类名称以完全限定的形式输出 形式。

    例如,对于类名 org.apache.xyz.SomeClass , the 模式 %C{1} 意志输出 SomeClass .

    警告 生成调用程序类信息的速度很慢。因此,除非执行速度不是问题,否则应避免使用。