gpt4 book ai didi

java - 使用 spring 和 apache tomcat 打印控制台日志的最佳方法是什么? [2018]

转载 作者:行者123 更新时间:2023-11-28 21:51:17 25 4
gpt4 key购买 nike

目前,我在使用 Apache tomcat 控制台调试错误和代码时遇到问题。有时会出现一些日志,有时不会。我已经搜索了足够多关于在控制台上打印日志的信息。它们不太容易理解/实现。

这里我有我的代码的 log4j.properties,它不会打印所有日志和方法输入输出条目。

log4j.rootCategory=debug,console
log4j.logger.com.demo.package=debug,console
log4j.additivity.com.demo.package=false

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.immediateFlush=true
log4j.appender.console.encoding=UTF-8
#log4j.appender.console.threshold=warn

log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d [%t] %-5p %c - %m%n

输出日志为

2018-04-18 18:03:13,175 [main] INFO Demo - Log4j console appender configuration is successful !!

最后我想知道,

<强>1。在控制台或日志文件中打印信息、错误、警告日志的最佳方式是什么

2018-04-18 @ 18:03:13 INFO -> methodName() -> Enter

2018-04-18 @ 18:03:14 信息 -> methodName() -> 退出

<强>2。 spring 或 java 中是否有任何快捷方式可用于打印带有 Enter-Exit 文本的方法名称,如上所示?否则我需要在所有方法中放入 Enter Exit。

最佳答案

#1。在控制台或日志文件中打印信息、错误、警告日志的最佳方式是什么

对于这个问题,我建议您使用log4jaspects。这将增强您的控制台和可见性。

如果您使用的是 maven,请使用此依赖项。

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.1</version>
</dependency>

您可以通过更改您的 log4j 配置来创建您自己的自定义日志。

log4j.properties

#Root Logger Option
log4j.rootLogger=INFO,myConsoleAppender,myAppender

## Redirect log messages to console
log4j.appender.myConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.myConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsoleAppender.layout.ConversionPattern=%d{yyyy-MM-dd@HH:mm:ss} %5p - %m%n
log4j.appender.myAppender=org.apache.log4j.RollingFileAppender

## Redirect log messages to a log file
log4j.appender.myAppender.File=${catalina.home}/logs/someFileName.log
log4j.appender.myAppender.MaxBackupIndex=1
log4j.appender.myAppender.MaxFileSize=1000KB
log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myAppender.layout.ConversionPattern=%d{yyyy-MM-dd@HH\:mm\:ss} %-5p - %m%n

您甚至可以根据需要自定义 myAppender 的布局和模式。我已经添加了关于生成带有日志的文件的代码。

#2。 spring 或 java 中是否有任何快捷方式可以打印带有 Enter-Exit 文本的方法名称,如上所示?

是的,Java 太大了。它具有所有可能的解决方案。

为此,您需要使用方面(您可以搜索有关AOP 的更多信息,即面向方面的编程)

使用slf4j依赖

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>

按照以下步骤/代码使用单个类放置 Enter-Exit 方法。

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@Aspect
@PropertySource(value= {"classpath:log4j.properties"})
public class LogginAspect {

Logger logger = LoggerFactory.getLogger(LogginAspect.class);

@Before("within(com.web.casemanager..*)")
public void logBefore(JoinPoint joinPoint) {
logger.info("Inside "+ joinPoint.getSignature().getDeclaringTypeName() + " --> " + joinPoint.getSignature().getName() + " --> Enter");
}

@After("within(com.web.casemanager..*)")
public void logAfter(JoinPoint joinPoint) {
logger.info("Inside "+ joinPoint.getSignature().getDeclaringTypeName() + " --> " + joinPoint.getSignature().getName() + " --> Exit");
}
}

@Before@After 注释将在每个方法的开始和结束时执行 logger.info/logger.error/logger.warn。

希望这对你有用。

关于java - 使用 spring 和 apache tomcat 打印控制台日志的最佳方法是什么? [2018],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49886598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com