如何在 java 中使用 log4j 在运行时为日志设置文件夹?
How to set a folder for logs during runtime using log4j in java?
我正在 Java 上写一个简单的套接字聊天。对于日志记录,我使用 log4j。后端包括Server.class
(处理一般逻辑)和ClientListener.class
(接受和操作用户的请求),它们都是线程。
问题是:
我需要根据要记录的事件是否发生在用户 X[=46= 的 Server
或 ClientListener
中,将日志保存到不同的目录中].
我如何看待解决方案:
Server
总是登录到 serv_base_dir/logs/logs.txt
ClientListeners
使用用户数据登录到文件夹,例如
serv_base_dir/users/X/logs/logs.txt
问题是:
如何在服务器 运行 期间设置用于保存日志的文件夹?
PS
我已阅读 Log4j 配置 - 不同文件的不同日志
文章,但它并没有完全解决我的问题,因为我需要在运行时设置文件夹,而不是在编译之前
如果有任何建议,我将不胜感激
如果你想设置一个名为特定用户未知的目录,直到运行时,
您可以通过在运行时将参数传递给 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.properties]
# 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 上写一个简单的套接字聊天。对于日志记录,我使用 log4j。后端包括Server.class
(处理一般逻辑)和ClientListener.class
(接受和操作用户的请求),它们都是线程。
问题是:
我需要根据要记录的事件是否发生在用户 X[=46= 的 Server
或 ClientListener
中,将日志保存到不同的目录中].
我如何看待解决方案:
Server
总是登录到 serv_base_dir/logs/logs.txtClientListeners
使用用户数据登录到文件夹,例如 serv_base_dir/users/X/logs/logs.txt
问题是:
如何在服务器 运行 期间设置用于保存日志的文件夹?
PS
我已阅读 Log4j 配置 - 不同文件的不同日志 文章,但它并没有完全解决我的问题,因为我需要在运行时设置文件夹,而不是在编译之前 如果有任何建议,我将不胜感激
如果你想设置一个名为特定用户未知的目录,直到运行时, 您可以通过在运行时将参数传递给 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.properties]
# 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