簡體   English   中英

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

[英]What is the best way to print console logs using spring and apache tomcat? [2018]

目前,我在使用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.在控制台或日志文件中打印INFO,錯誤,警告日志的最佳方法是什么

2018-04-18 @ 18:03:13信息-> methodName()->輸入

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

2.在spring或java中,是否有任何快捷方式可用於顯示帶有Enter-Exit文本的方法名稱,如上所示? 否則,我需要在所有方法中都輸入Enter Exit。

#1。 在控制台或日志文件中打印INFO,錯誤,警告日志的最佳方法是什么

對於這個問題,我想建議你使用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>

您可以通過更改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太大了。 它具有所有可能的解決方案。

為此,您需要使用aspects (您可以搜索有關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。

希望如此對您有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM