2017-06-07 76 views
0

我想在我的Spring Boot应用程序上配置记录器 - 我只是从Spring MVC 2迁移到Spring Boot。所以所有的配置都已到位。我已将log4j.properties文件放在应用程序类路径中,即application.properties文件所在的位置。log4j记录器不写入日志文件

Logger类的定义如下:

public class Logger { 

    public static void Log(String className, String methodName, String message, int loggingLevel) { 

     Log4jLogger log4jLogger = Log4jLogger.getInstance(); 
     org.apache.log4j.Logger logger = log4jLogger.getLogger(); 

     switch (loggingLevel) { 
      case 1: { 
       logger.error(className + " | " + methodName + " | " + message); 
       break; 
      } 

      case 2: 

      case 3: { 
       logger.info(className + " | " + methodName + " | " + message); 
       break; 
      } 

      case 4: 

      case 5: { 
       logger.debug(className + " | " + methodName + " | " + message); 
       break; 
      } 
     } 
    } 
} 

import java.io.IOException; 
import java.util.Properties; 

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 
public class Log4jLogger { 

    private Logger logger; 
    private static Log4jLogger log_instance; 

    public Log4jLogger() { 
     String logFileName; 
     Properties properties = new Properties(); 
     try { 
      properties.load(getClass().getClassLoader().getResourceAsStream("log4j.properties")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     logFileName = properties.getProperty("log4j.appender.A2.file"); 
     if (logFileName.equals("")) { 
      logFileName = "temp"; 
     } else { 
      logFileName = logFileName.substring(logFileName.lastIndexOf("/") + 1, logFileName.lastIndexOf(".")); 
     } 
     logger = org.apache.log4j.Logger.getLogger(logFileName); 
     PropertyConfigurator.configure(properties); 
     log_instance = this; 
    } 

    public static Log4jLogger getInstance() { 
     if (log_instance == null) { 
      log_instance = new Log4jLogger(); 
     } 
     return log_instance; 
    } 

    public Logger getLogger() { 
     return logger; 
    } 
} 

对于需要记录器的任何类,我只要致电:

Logger.Log("ClassName", "MethodName", "message Start...", 5); 

它用于登录前的文件C:/logs/temp.log中,但它似乎不适用于Spring Boot。只有信息日志被打印在控制台上。

配售这里的内容log4j.properties

# Log4j configuration file. 
log4j.rootCategory=INFO, A1 
log4j.logger.orion=DEBUG, A2 
log4j.logger.orionJUnit=DEBUG, A3 
log4j.appender.A1.Threshold=WARN 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n 
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.A2.file=C:/logs/temp.log 
log4j.appender.A2.datePattern='.'yyyy-MM-dd 
log4j.appender.A2.append=true 
log4j.appender.A2.layout=org.apache.log4j.PatternLayout 
log4j.appender.A2.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n 
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.A3.file=c:/temp1/logs/logs.log 
log4j.appender.A3.datePattern='.'yyyy-MM-dd 
log4j.appender.A3.append=true 
log4j.appender.A3.layout=org.apache.log4j.PatternLayout 
log4j.appender.A3.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n 

什么我可能会丢失任何指针?

+0

你不应该定义你自己的'Logger'类排除的logback罐子。如果你想创建一个新的记录器,你可以在配置文件中这样做。还有你要记录的类,称之为'A',做类似'Logger logger = Logger.getLogger(A.class);' – Ishnark

+1

检查部分76.1.1配置logback仅用于链接https://输出的文件docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html –

+0

不想替换旧的代码,所以试图让它工作。无论如何,我现在已经用@KishorRaskar提到的logback.xml替换它了 – Reema

回答

0

尝试从您的POM文件

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency>