Kaynağa Gözat

add:统一日志v1

tujidelv 3 yıl önce
ebeveyn
işleme
d8f63a7980

+ 2 - 2
pom.xml

@@ -51,10 +51,10 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <!-- 引入log4j2依赖 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-log4j</artifactId>
-            <version>1.3.8.RELEASE</version>
+            <artifactId>spring-boot-starter-log4j2</artifactId>
         </dependency>
         <!--mybatis-->
         <dependency>

+ 2 - 0
src/main/java/top/lvzhiqiang/App.java

@@ -11,5 +11,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
 public class App {
     public static void main(String[] args) {
         SpringApplication.run(App.class, args);
+
+        System.out.println("启动完成!");
     }
 }

+ 5 - 7
src/main/java/top/lvzhiqiang/config/WebLogAspect.java

@@ -1,12 +1,11 @@
 package top.lvzhiqiang.config;
 
+import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -19,10 +18,9 @@ import java.util.Enumeration;
  */
 @Aspect
 @Component
+@Slf4j
 public class WebLogAspect {
 
-    private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
-
     @Pointcut("execution(public * top.lvzhiqiang.controller.*.*(..))")
     public void webLog() {
     }
@@ -33,17 +31,17 @@ public class WebLogAspect {
         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         HttpServletRequest request = attributes.getRequest();
         // 记录下请求内容
-        logger.info("REQUEST : URL={},HTTP_METHOD={},IP={}", request.getRequestURL().toString(), request.getMethod(), request.getRemoteAddr());
+        log.debug("REQUEST : URL={},HTTP_METHOD={},IP={}", request.getRequestURL().toString(), request.getMethod(), request.getRemoteAddr());
         Enumeration<String> enu = request.getParameterNames();
         while (enu.hasMoreElements()) {
             String name = enu.nextElement();
-            logger.info("name:{},value:{}", name, request.getParameter(name));
+            log.debug("name:{},value:{}", name, request.getParameter(name));
         }
     }
 
     @AfterReturning(returning = "ret", pointcut = "webLog()")
     public void doAfterReturning(Object ret) throws Throwable {
         // 处理完请求,返回内容
-        logger.info("RESPONSE : " + ret);
+        // log.debug("RESPONSE : " + ret);
     }
 }

+ 0 - 2
src/main/java/top/lvzhiqiang/controller/VideoInfoController.java

@@ -2,7 +2,6 @@ package top.lvzhiqiang.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageInfo;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -37,7 +36,6 @@ public class VideoInfoController {
      */
     @PostMapping("/getVideoInfoPage")
     public PageInfo<VideoInfo> getVideoInfoPage(@RequestBody VideoInfoQuery videoInfoQuery) {
-
         return videoInfoService.getVideoInfoPage(JSON.parseObject(JSON.toJSONString(videoInfoQuery), HashMap.class));
     }
 }

+ 0 - 1
src/main/java/top/lvzhiqiang/mapper/DicCodeMapper.java

@@ -4,7 +4,6 @@ import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Select;
 import top.lvzhiqiang.entity.DicCode;
-import top.lvzhiqiang.entity.VideoCast;
 
 import java.util.List;
 

+ 0 - 28
src/main/resources/log4j.properties

@@ -1,28 +0,0 @@
-log4j.rootLogger=info,error,CONSOLE,DEBUG
-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
-log4j.logger.info=info
-log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.info.layout=org.apache.log4j.PatternLayout
-log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
-log4j.appender.info.datePattern='.'yyyy-MM-dd
-log4j.appender.info.Threshold = info
-log4j.appender.info.append=true
-log4j.appender.info.File=D:\\log4j\\springbootdemo\\info
-log4j.logger.error=error
-log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.error.layout=org.apache.log4j.PatternLayout
-log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
-log4j.appender.error.datePattern='.'yyyy-MM-dd
-log4j.appender.error.Threshold = error
-log4j.appender.error.append=true
-log4j.appender.error.File=D:\\log4j\\springbootdemo\\error
-log4j.logger.DEBUG=DEBUG
-log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
-log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
-log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
-log4j.appender.DEBUG.Threshold = DEBUG
-log4j.appender.DEBUG.append=true
-log4j.appender.DEBUG.File=D:\\log4j\\springbootdemo\\debug

+ 104 - 0
src/main/resources/log4j2-spring.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
+<!--monitorInterval:Log4j能够自动检测修改配置文件和重新配置本身,设置间隔秒数-->
+<configuration monitorInterval="5" status="WARN">
+    <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+
+    <!--变量配置-->
+    <Properties>
+        <Property name="PID">????</Property>
+        <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+        <Property name="LOG_LEVEL_PATTERN">%5p</Property>
+        <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+
+        <!--定义日志文件存储的基础路径和文件名。因为 Spring Boot 并未提供 Log4j2 拓展,无法直接读取 Spring Boot 配置文件,所以这里我们只能直接定义-->
+        <Property name="FILE_PATH" value="D:\logs\l1024v-jav"/>
+        <property name="FILE_NAME" value="jav"/>
+
+        <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符,%logger{36} 表示 Logger 名字最长36个字符 -->
+        <property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+        <!-- 控制台的日志格式:日期和时间(毫秒精度),日志级别,进程 ID,分隔符(用于区分实际日志内容的开始),线程名称(在方括号中),日志记录器名称(这通常是源类名称),日志内容 -->
+        <Property name="CONSOLE_LOG_PATTERN"
+                  value="%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}"/>
+        <!-- 日志文件的日志格式:同上-->
+        <property name="FILE_LOG_PATTERN"
+                  value="%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}"/>
+    </Properties>
+
+    <appenders>
+        <!-- 控制台的 Appender -->
+        <console name="Console" target="SYSTEM_OUT">
+            <!-- 输出日志的格式 -->
+            <PatternLayout pattern="${CONSOLE_LOG_PATTERN}"/>
+            <!-- 控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+        </console>
+
+        <!-- 日志文件的 Appender -->
+        <!-- 文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用 -->
+        <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </File>
+
+        <!-- 日志文件的 Appender -->
+        <!-- 这个会打印出所有的info及以上级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
+        <RollingFile name="RollingFileDebug" fileName="${FILE_PATH}/debug.log"
+                     filePattern="${FILE_PATH}/DEBUG/${FILE_NAME}-DEBUG-%d{yyyy-MM-dd}_%i.log.gz">
+            <!-- onMatch="ACCEPT"匹配level级别及以上级别;onMatch="DENY"不匹配level级别及以上级别; -->
+            <!-- onMismatch="ACCEPT" 表示匹配level级别以下的级别;onMismatch="DENY" 表示不匹配level级别以下的级别; -->
+            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${FILE_LOG_PATTERN}"/>
+            <!-- 滚动策略,基于时间 + 大小的分包策略 -->
+            <Policies>
+                <!--interval属性用来指定多久滚动一次,默认是1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+        <!-- 这个会打印出所有的warn及以上级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log"
+                     filePattern="${FILE_PATH}/WARN/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
+            <Filters>
+                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
+                <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+            </Filters>
+            <PatternLayout pattern="${FILE_LOG_PATTERN}"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+        <!-- 这个会打印出所有的error及以上级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log"
+                     filePattern="${FILE_PATH}/ERROR/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
+            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${FILE_LOG_PATTERN}"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+    </appenders>
+
+    <!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
+    <!--只有定义了logger并引入的appender,appender才会生效-->
+    <loggers>
+        <!--若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。-->
+        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
+        <logger name="org.mybatis" level="debug" additivity="true"/>
+        <Logger name="top.lvzhiqiang" level="debug" additivity="true"/>
+
+        <!-- 设置 Appender ,同时 ROOT 的日志级别为INFO -->
+        <root level="info">
+            <appender-ref ref="Console"/>
+            <appender-ref ref="RollingFileDebug"/>
+            <appender-ref ref="RollingFileWarn"/>
+            <appender-ref ref="RollingFileError"/>
+        </root>
+    </loggers>
+
+</configuration>