[英]How to set a folder for logs during runtime using log4j in java?
我正在用Java寫一個簡單的套接字聊天。 對於日志記錄,我使用log4j。 后端包括Server.class
(處理常規邏輯)和ClientListener.class
(接收並處理用戶的請求),它們都是線程。
我需要將日志保存到其他目錄中,具體取決於是否要在用戶X的Server
或ClientListener
中發生要記錄的事件。
Server
始終登錄到serv_base_dir / logs / logs.txt
ClientListeners
使用用戶數據登錄到跟蹤器,例如serv_base_dir / users / X /logs/logs.txt
在服務器運行期間,如何設置要在其中保存日志的日志文件夾?
我已經閱讀過Log4j config-有關將日志記錄到不同文件的文章,但是它不能完全解決我的問題,因為我需要在運行時設置文件夾,而不是在編譯之前設置文件夾,我將非常樂意提供任何建議
如果要在運行前設置一個名為“特定用戶”的目錄,則可以通過在運行時將參數傳遞給log4j屬性文件來解決此問題。
[樣本代碼]
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.