当前位置: 首页 > 知识库问答 >
问题:

Log4j日志输出流链接

年光明
2023-03-14

我有一个传统的Java应用程序,它使用Log4j作为日志工具。该应用程序缺少度量,所以我想找到一种方法,智能地检索一些基于java类的度量。

问题是我想在服务之前拦截所有log4j日志。

这个想法的灵感来自于系统的链接。看起来像这样

TeeOutputStream myOut=new TeeOutputStream(System.out, mySpecificOut);
PrintStream ps = new PrintStream(myOut, true); //true - auto-flush after println
System.setOut(ps);

那么有没有一种方法来链接Log4j输出流并在java上完全控制它,因为我需要在登录前做一些逻辑。

谢谢

共有1个答案

祁奇略
2023-03-14

是的,你可以定义你自己的流使用

LoggingOutputStream extends OutputStream {

为了拦截原木

System.setOut(new PrintStream(new LoggingOutputStream(

看看这个基于innoq/log4j LoggingOutputStream的好例子。

 类似资料:
  • 主要内容:Log4j Appender Properties配置Log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX 系统日志守护进程、Socket套接字等。 每个 Appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。 属性 描述 layout Appender 使用 Layout 对象和与它们关联的转换模式来格式化日志信息。 targe

  • 主要内容:Log4j Layout类型,Log4j Layout方法Apache Log4j 支持各种Layout对象,每个对象都可以根据各种布局格式化日志数据。我们还可以创建一个 Layout 对象,以特定于应用程序的方式格式化日志数据。 所有 Layout 对象都从Appender对象接收一个LoggingEvent对象。然后 Layout 对象从 LoggingEvent 中检索消息参数并应用适当的 ObjectRenderer 来获取消息的字符串表示。 L

  • 你如何测试和调试你的代码呢?Lua 的两个主力作者是这样回复的: Luiz Henrique de Figueiredo:我主要是一块一块的构建,分块测试。我很少使用调试器。即使用调试器,也只是调试 C 代码。我从不用调试器调试 Lua 代码。对于 Lua 来说,在适当的位置放几条打印语句通常就可以胜任了。 Roberto Ierusalimschy:我差不多也是这样。当我使用调试器时,通常只是用

  • Blade使用了 slf4j-api 作为日志接口,为了方便起见,默认内置了日志实现, 包含按日期进行文件归档等操作,一个小型应用无需配置日志组件。 maven的坐标名为 blade-log,源码在 这里 默认的日志级别是 INFO,你可以修改它。使用日志和往常一样: public class LogExample { private static final org.slf4j.Logg

  • 问题内容: 在python中使用multiprocessing.Process类时,是否有办法记录给定Process的stdout输出? 问题答案: 最简单的方法可能是覆盖。从多处理手册中稍微修改一个示例: 并运行它:

  • 有时,在你的游戏正在运行的时候,为了了解程序的运行过程或是为了查找一个 BUG,你想看到一些运行时信息,可以! 这个需求引擎已经考虑到了,使用 log() 可以把信息输出到控制台,这样使用: // a simple string log("This would be outputted to the console"); // a string and a variable string s =