您好,登錄后才能下訂單哦!
本篇內容介紹了“Log4j中相對路徑的問題怎么解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、properties文件中:
log4j.appender.logfile.File=${WORKDIR}/logs/app.log
其中“${WORKDIR}/”是個變量,會被System Property中的“WORKDIR”的值代替。這樣,我們就可以在log4j加載配置文件之前,先用System.setProperty設置好根路徑。
jsp中可以這樣:
String path = pageContext.getServletContext().getRealPath("/");
String realPath = path+"WEB-INFclasseslog4j.properties";
System.setProperty("WORKDIR",path.replace("","/"));
PropertyConfigurator.configure(realPath.replace("","//"));//加載.properties文件
[@more@]
二、可以使用環境變量(沒試過網上看的)
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/logs_tomcat.log
log4j.appender.R.MaxFileSize=10KB
三、具體實現:(沒試過網上看的)
一般在我們開發項目過程中,log4j日志輸出路徑固定到某個文件夾,這樣如果我換一個環境,日志路徑又需要重新修改,比較不方便,目前我采用了動態改變日志路徑方法來實現相對路徑保存日志文件
(1).在項目啟動時,裝入初始化類:
public class Log4jInit extends HttpServlet {
static Logger logger = Logger.getLogger(Log4jInit.class);
public Log4jInit() { }
public void init(ServletConfig config) throws ServletException {
String prefix = config.getServletContext().getRealPath("/");
String file = config.getInitParameter("log4j");
String filePath = prefix + file;
Properties props = new Properties();
try {
FileInputStream istream = new FileInputStream(filePath);
props.load(istream);
istream.close();
//toPrint(props.getProperty("log4j.appender.file.File"));
String logFile = prefix + props.getProperty("log4j.appender.file.File");//設置路徑
props.setProperty("log4j.appender.file.File",logFile); PropertyConfigurator.configure(props);
//裝入log4j配置信息
} catch (IOException e) {
toPrint("Could not read configuration file [" + filePath + "].");
toPrint("Ignoring configuration file [" + filePath + "].");
return;
}
}
public static void toPrint(String content) {
System.out.println(content);
}
}
(2).Web.xml中的配置
“Log4j中相對路徑的問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。