Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用spring和ApacheTomcat打印控制台日志的最佳方法是什么?[2018]_Java_Spring_Tomcat_Logging - Fatal编程技术网

Java 使用spring和ApacheTomcat打印控制台日志的最佳方法是什么?[2018]

Java 使用spring和ApacheTomcat打印控制台日志的最佳方法是什么?[2018],java,spring,tomcat,logging,Java,Spring,Tomcat,Logging,目前,我在使用ApacheTomcat控制台调试错误和代码时遇到问题。有时会出现一些日志,有时不会。 关于在控制台上打印日志,我已经搜索够了。它们不太容易理解/实现 这里我有log4j.properties我的代码,它不会打印所有日志和方法输入输出条目。 log4j.rootCategory=debug,console log4j.logger.com.demo.package=debug,console log4j.additivity.com.demo.package=false log4

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

这里我有
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信息->方法名()->输入

2018-04-18@18:03:14信息->方法名()->退出

2。spring或java中是否有任何快捷方式可以使用如上所示的Enter-Exit文本打印方法名称?否则我需要在所有方法中都使用Enter-Exit。

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

对于这个问题,我建议您将
log4j
aspects
结合使用。这将为您的控制台和可视性提供电源

如果您使用的是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>
您甚至可以根据需要自定义
myAppender
的布局和模式。我添加了关于生成带有日志的文件的代码

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

是的,Java太庞大了。它有所有可能的解决办法

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

使用
slf4j
dependency

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
在每个方法的开始和结束时,注释将执行logger.info/logger.error/logger.warn


希望这对您有用。

您使用的是Spring还是Springboot?AOP概念肯定会对您有所帮助。是的,我正在使用Spring。我需要检查一下AOP。谢谢。它很好用!
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
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");
    }
}