首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring和apache打印控制台日志的最佳方法是什么?[2018]

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

Stack Overflow用户
提问于 2018-04-17 20:05:36
回答 1查看 1.1K关注 0票数 2

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

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

代码语言:javascript
复制
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

,它将输出日志作为

代码语言:javascript
复制
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() ->进入

2018-04-18 @ 18:03:14 INFO -> methodName() ->出口

2.如上面所示,在spring或java中有什么快捷方式可以打印带有Enter-Exit文本的方法名吗?,否则我需要在所有方法中输入Exit。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 20:25:17

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

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

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

代码语言:javascript
复制
<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

代码语言:javascript
复制
#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中是否有任何快捷方式可用于打印输入-退出文本的方法名称,如上文所示?

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

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

使用slf4j依赖项

代码语言:javascript
复制
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>

按照下面的步骤/代码使用单个类放置出入口方法。

代码语言:javascript
复制
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。

希望这样对你有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49886598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档