gpt4 book ai didi

java - 如何在java中使用log4j在运行时设置日志文件夹?

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:11 26 4
gpt4 key购买 nike

我正在 Java 上编写一个简单的套接字聊天。对于日志记录,我使用 log4j。后端包括Server.class(处理一般逻辑)和ClientListener.class(接受并操作用户的请求),它们都是线程。

问题是:

我需要根据要记录的事件是在用户XServer中还是在ClientListener中发生,将日志保存到不同的目录中。

我如何看待解决方案:

  • 服务器始终登录到serv_base_dir/logs/logs.txt

  • ClientListeners 使用用户数据(例如:serv_base_dir/users/X/logs/logs.txt

问题是:

如何设置服务器运行期间保存日志的文件夹?

附注

我已阅读Log4j config - different logs to different files文章,但它并没有完全解决我的问题,因为我需要在运行时设置文件夹,而不是在编译之前我将不胜感激任何建议

最佳答案

如果要设置一个名为特定用户未知的目录,直到运行时,您可以通过在运行时将参数传递给 log4j 属性文件来解决它。

Pass argument to log4j file

[示例代码]

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

public class MyClass
{
public static Logger mLogger = Logger.getLogger(MyClass.class.getName());

public static void main(String[] args)
{
System.setProperty("test", "hello");
PropertyConfigurator.configure("./log4j.properties");

mLogger.debug("Hello world!");

// modify variable and re-configure
System.setProperty("test", "bye");
PropertyConfigurator.configure("./log4j.properties");

mLogger.debug("byebye");
}
}

[log4j.属性]

# Root logger option
log4j.rootLogger=DEBUG, file

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./${test}.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

关于java - 如何在java中使用log4j在运行时设置日志文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54586973/

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