首先在您的Java代码中执行以下操作,然后将log4j配置到应用程序中。
注意:在执行以下代码时需要处理或捕获必需的异常。
System.setProperty("hostName", InetAddress.getLocalHost().getHostName());
System.setProperty("currentDate", new SimpleDateFormat("dd-MMM-yyyy").format(new Date()));
org.apache.log4j.Logger LOG = Logger.getLogger(YourJavaClassName.class);
更新:
如果您的应用程序是Web应用程序,则需要配置属性,即在tomcat-server
启动之后以及任何application
运行之前所需的属性。
为此,请创建一个类ApplicationConfiguration
,其中实现了ServletContextListener
接口,该接口可以在任何应用程序运行之前首先运行。
做同样的事情,
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ApplicationConfiguration implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
try {
System.setProperty("hostName", InetAddress.getLocalHost().getHostName());
System.setProperty("currentDate", new SimpleDateFormat("dd-MMM-yyyy").format(new Date()));
} catch (UnknownHostException e) {
System.out.println("Error Message : " + e.getMessage());
}
}
}
请将您的log4j.xml文件设置为相同的方式,
<appender name="applog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${path}/app_${hostName}.${currentDate}.log" />
<param name="MaxFileSize" value="1MB" />
<param name="DatePattern" value=".dd-MM-yyyy" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd-MM-yyyy HH:mm:ss}] [%-5p] %m%n"/>
</layout>
</appender>
请相应更新web.xml文件。
<web-app ...>
<listener>
<listener-class>
com.pck1.ApplicationConfiguration
</listener-class>
</listener>
</web-app>
这个配置需要应用到web.xml
中,因为应用程序在启动时,通过这个配置将像Context-listener一样跟随它。
更新2:
<logger name="packageName.AAA" additivity="false" >
<level value="INFO" />
<appender-ref ref="applog"/>
</logger>
logback
或log4j2
。从logback
的SiftingAppender
开始。 - Nati