记录Java web应用程序?
我计划实现登录到我目前正在开发的一个web应用程序,但我正在为一些细节而挣扎。记录Java web应用程序的最佳方式是什么 具体而言记录Java web应用程序?,java,web-applications,logging,log4j,Java,Web Applications,Logging,Log4j,我计划实现登录到我目前正在开发的一个web应用程序,但我正在为一些细节而挣扎。记录Java web应用程序的最佳方式是什么 具体而言 配置文件在.war包文件中的位置 人们登录到哪里,相对或绝对路径平面文件,或数据库 Log4J日志记录是自动直接进入应用服务器日志文件,还是必须进行设置?在本例中,我使用的是Tomcat,但我经常使用Jrun 对于web应用程序日志记录,我还应该注意哪些其他问题 目前我正在使用Log4J,但我认为最佳实践将普遍适用于所有日志实现 编辑: 除了上面的问题之外,还
- 配置文件在.war包文件中的位置
- 人们登录到哪里,相对或绝对路径平面文件,或数据库
- Log4J日志记录是自动直接进入应用服务器日志文件,还是必须进行设置?在本例中,我使用的是Tomcat,但我经常使用Jrun
- 对于web应用程序日志记录,我还应该注意哪些其他问题
除了上面的问题之外,还有一个问题
- 你在哪里初始化日志 配置
DOMConfigurator.configureAndWatch("log4j.xml");
web应用程序的等价物是什么?我将配置放在默认包中:src/ 并使用${catalina.home}系统属性登录到文件: log4j.appender.???.file=${catalina.home}/logs/system.log log4j.appender.???.file=${catalina.home}/logs/system.log
- 将log4j放入容器(服务器)中,并为每个应用程序创建适当的appender
- 相对于服务器路径,但这取决于您的需要
- 根据您的需要,我们使用Appender来记录不同的文件,例如一个文件用于hibernate信息/统计,一个文件仅用于应用程序,等等
- 不要登录太多,这会减慢应用程序的速度
如果您是从不同的线程使用日志,它是线程安全的,并且会公开参数化的日志消息。我个人将log4j.properties放在WEB-INF目录中,并使用init servlet和以下代码:
public class InitServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private static final String LOG4J_FILE = "WEB-INF/log4j.properties";
public InitServlet() {
super();
}
@Override
public void init() throws ServletException {
super.init();
PropertyConfigurator.configure(getServletContext().getRealPath(LOG4J_FILE));
LogFactory.getLog(InitServlet.class).info("LOG 4J configured");
}
将配置文件放置在一个管理员可以修改它而不需要重建Web应用程序的地方(例如,这样他们可以在不在半夜唤醒你的情况下启动详细的日志记录)是一个好主意。p> 不幸的是,没有“官方”的方法来定位web应用程序中的外部化资源(如果我错了,请纠正我)。我见过的最常用的方法是查看类路径中的目录。
- 配置文件在.war包文件中的位置
- 人们登录到哪里,相对或绝对路径平面文件,或数据库
- Log4J日志记录是自动直接进入应用服务器日志文件,还是必须进行设置?在本例中,我使用的是Tomcat,但我经常使用Jrun
- 对于web应用程序日志记录,我还应该注意哪些其他问题
if(logger.isDebugEnabled()) {
logger.debug("Bla Bla Bla");
}
- 配置文件在.war包文件中的位置
- 人们登录到哪里,相对或绝对路径平面文件,或数据库
- Log4J日志记录是自动直接进入应用服务器日志文件,还是必须进行设置?在本例中,我使用的是Tomcat,但我经常使用Jrun
- 对于web应用程序日志记录,我还应该注意哪些其他问题?
演出一旦上线,将日志级别限制在最低限度(即警告或错误)。使用
if(log.isDebugEna