gpt4 book ai didi

c# - 在 log4j/log4net 中捕获标准输出

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:57 24 4
gpt4 key购买 nike

我有一个用 Java 写入标准输出的库。我想使用 log4j 在日志中捕获此输出。 (我没有写这个库,所以我无法控制库里面的代码)。

有没有简单的方法来做到这一点? System.setOut 是正确的方法吗?我将什么传递给 System.setOut?

此外,您将如何在 .NET/C# 中执行此操作?

最佳答案

一个解决方案是继承OutputStream。您只需实现 write( int b )。然后在构造函数中使用您的 OutputStream 创建一个 PrintStream

它可能看起来像:

public class L4JOS extends OutputStream {
logger = Logger.getLogger( "std.out" );
private int lineEnd = (int)'\n';
private ByteArrayOutputStream baos = new ByteArrayOutputStream();

public void write( int b ) throws IOException {
baos.write( b );
if ( b == lineEnd ) {
logger.info( baos.toString() );
baos.reset();
}
}

}

如果它是多线程的,那么您需要做更多的工作。并确保 appender 不会转到 System.out。

关于c# - 在 log4j/log4net 中捕获标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com