对于我的netbeans java web应用程序,我想使用记录器进行调试。 为此,我在我的库中包含了log4j-1.2.16.jar:
在“源包”文件夹中,我创建了一个名为“Logging”的文件夹。在这个文件夹中,我放了以下servlet(在应用程序启动时初始化记录器):
包记录;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
public class InitLog4j extends HttpServlet {
public void init() {
String initPath = getInitParameter("logPath");
String logPath = "/WEB-INF/logs/error.log";
if (initPath != null) logPath = initPath;
FileAppender appender = getAppender(logPath);
if (appender == null) return;
initLogger(null, appender, Level.INFO);
}
private FileAppender getAppender(String fileName) {
RollingFileAppender appender = null;
try {
appender = new RollingFileAppender(
new PatternLayout("%-5p %c %t%n%29d - %m%n"),
getServletContext().getRealPath(fileName),
true);
appender.setMaxBackupIndex(5);
appender.setMaxFileSize("1MB");
} catch (IOException ex) {
System.out.println(
"Could not create appender for "
+ fileName + ":"
+ ex.getMessage());
}
return appender;
}
private void initLogger(String name,
FileAppender appender,
Level level)
{
Logger logger;
if (name == null) {
logger = Logger.getRootLogger();
} else {
logger = Logger.getLogger(name);
}
logger.setLevel(level);
logger.addAppender(appender);
logger.info("Starting " + logger.getName());
}
}
在我的web.xnl文件中,我包括以下几行:
最后我创建了一个日志文件(在WEB-INF文件夹内的logs文件夹中):
然后我在“controller”类中创建了一个记录器。该记录器应该将文本消息写入文件error.log:
但是,当我运行应用程序时(创建一个http请求,正如您从上图中看到的那样 - 应该触发记录器),没有任何内容写入error.log文件。它像以前一样空洞。
为什么我的记录器没有写入日志文件?
********* UPDATE **************** *********************
无法将jar文件添加到lib文件夹中:
只能将它们添加到Libraries文件夹:
答案 0 :(得分:0)
工作方法(虽然有效,但不是最好的)
如果您只想记录这个应用程序,请将log4j.jar
和log4j.properties
放入WEB-INF/lib
。您无法将.jar
个文件放入WEB-INF /classes
。这是为.class
个文件保留的。
log4j.jar
和log4j.properties
文件必须由同一个类加载器加载,因此两个文件必须位于lib目录中,才能让类加载器接收它。 / LI>
或者,如果要对项目中的所有应用程序使用相同的日志配置,可以将这两个文件转移到Tomcat/lib
目录。
更好的方法
将非jar文件放在lib目录中不是一个好习惯。 log4j.properties
是配置文件。我们可以改为:
log4j.jar
保留在' WEB-INF / lib'目录。 log4j.properties
放入conf目录(Tomcat / conf'或' WEB-INF / conf')。