gpt4 book ai didi

java - 将输出重定向到滚动文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:41 25 4
gpt4 key购买 nike

关于如何将程序输出重定向到文件的例子有很多。
我需要设置文件的最大大小并滚动文件(消失旧消息)或备份旧文件并开始记录到新文件。

有没有办法使用操作系统核心的东西来做到这一点?

我的客户对我创建日志文件每个应用程序感到困惑,并在那里记录所有标准输出。
该应用程序是长期运行的应用程序,包含多个模块,这些模块在不同的 JVM 中启动(换句话说,这些是多个应用程序)并使用相同的 log4j.properties 文件。
我使用的是 java 和 log4j,但 log4j loggs per package 不是每个应用程序。它不适合我,因为两个模块可以有相同的包(记录器类别)但应该被定向到不同的文件。
应用程序模块使用 .sh 脚本启动。

谢谢

最佳答案

log4j 不以包为基础进行记录。您可以为其提供任何您喜欢的名称。

在您的 log4j.xml 中,添加以下内容:

<appender name="USERACTION" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/var/logs/useraction.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d%m%n" />
</layout>
</appender>

<logger name="UserAction" additivity="false">
<level value="INFO" />
<appender-ref ref="USERACTION" />
</logger>

现在像这样实例化你的记录器:

private final static Logger LOG = Logger.getLogger("UserAction");

记录到此记录器的所有内容都将进入文件 useraction.log。您看到相关性了吗?

在当前类之后命名记录器只是为了方便,但绝不是强制性的。

我经常使用它来区分日志条目。我的一些类有多个记录器实例,例如一个用于用户操作,一个用于低级内容,一个用于服务调用等。

关于java - 将输出重定向到滚动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10334966/

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