我有一个疑问,如果我编写了一个简单的 Java 类,并且我想查看在后面执行的日志,那么这些日志是由 JVM 在后端执行的。我有 log4j JAR。你能给我建议如何实现这一目标吗?
我希望看到在 WebApp 的情况下生成的相同日志,因此我可以将它重用于 Java App。
尝试在这里查看 log4j api/demo http://www.vaannila.com/log4j/log4j-tutorial/log4j-tutorial.html
您可以使用 log4j 为任何类和任何应用程序 afaik 生成日志,它不一定是 Web 应用程序
这是一个非常简单的示例,您应该能够适应您想要实现的目标。
如果您的“简单 Java 类”恰好位于 Java EE 容器中(例如 Tomcat、JBoss 或 WebSphere 中的 .jsp 或 servlet),那么您需要做的就是:
1)导入org.apache.log4j.Logger;
2)在你的类中声明一个静态实例:
EXAMPLE: `static Logger logger = Logger.getLogger ("MyApp");`
3)使用你的记录器
EXAMPLE: `logger.info ("something interesting happened");`
4) 如果您在 CLASSPATH 中包含 log4j.java 和您自己的 log4j.properties,那么您不需要做任何其他事情。
以下是有关将 log4j 与 Tomcat 或应用服务器一起使用的更多信息:
这是一个非常简单的“记录”示例程序,来自上面的 tutorialspoint.com 链接:
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class log4jExample{
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(
log4jExample.class.getName());
public static void main(String[] args)
throws IOException,SQLException{
log.debug("Hello this is an debug message");
log.info("Hello this is an info message");
}
}
步骤 1:在您的项目中导入 log4j jar 文件
第 2 步:- 创建一个 Log java 文件
public Log(Class className) {
logger = Logger.getLogger(className.getClass());
logger.getClass();
final String LOG_PROPERTIES_FILE_NAME = "log4j.properties";
props = loadLogFile(LOG_PROPERTIES_FILE_NAME, className);
//props =getPropsFile(LOG_PROPERTIES_FILE_NAME, className);
PropertyConfigurator.configure(props);
}
public static Properties loadLogFile(String propertyFile, Class className) {
//String filePath="";
try {
Properties ps = null;
ResourceBundle bundle = ResourceBundle
.getBundle("resource.DbProperties");
String logPath = bundle.getString("logs.path");
File filePath = new File(logPath);
if (!filePath.exists()) {
filePath.mkdirs();
}
props.clone();
props = getPropsFile(propertyFile, className);
props.setProperty("info_file_path", filePath.toString());
// PropertyConfigurator.configure(props);
} catch (Exception e) {
e.printStackTrace();
}
return props;
}
public void info(String message) {
logger.info(message);
}
public void warn(String message) {
logger.warn(message);
}
public void error(String message) {
logger.error(message);
}
public void fatal(String message) {
logger.fatal(message);
}
public void printStackTrace(Throwable ex) {
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
logger.error("\n" + sw.toString());
}
log4j.properties
log4j.rootCategory=LOGFILE
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=${info_file_path}\\info_Pension_application.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.Threshold=DEBUG
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n