1 Star 0 Fork 0

Dobukle / log-component-demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

1.SpringMvc版本

1.引入日志组件

这里是在日志组件执行 mvn cleam install后再回引入进来

<!--日志组件-->
<dependency>
    <groupId>com.caigaoqing.tech</groupId>
    <artifactId>log-component</artifactId>
    <version>1.3</version>
</dependency>

2.依赖

<properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <java.version>1.8</java.version>
          <java.encoding>UTF-8</java.encoding>
          <!-- web版本-->
          <org.springframework-version>4.1.1.RELEASE</org.springframework-version>
          <!-- servlet-->
          <servlet-api-version>3.0.1</servlet-api-version>
          <aspectjrt-version>1.6.10</aspectjrt-version>
          <aspectjweaver-version>1.7.2</aspectjweaver-version>
          <slf4j-api-version>1.7.5</slf4j-api-version>
          <slf4j-log4j12-version>1.7.5</slf4j-log4j12-version>
          <log4j-version>1.2.17</log4j-version>
          <commons-lang3-version>3.7</commons-lang3-version>
          <lombok-version>1.16.20</lombok-version>
          <fastjson-version>1.2.47</fastjson-version>
      </properties>
  
  
      <dependencies>
          <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>fastjson</artifactId>
              <version>${fastjson-version}</version>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-web</artifactId>
               <version>${org.springframework-version}</version>
          </dependency>
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>javax.servlet-api</artifactId>
              <version>${servlet-api-version}</version>
              <scope>provided</scope>
          </dependency>
  
          <!-- AspectJ -->
          <dependency>
              <groupId>org.aspectj</groupId>
              <artifactId>aspectjrt</artifactId>
              <version>${aspectjrt-version}</version>
          </dependency>
          <dependency>
              <groupId>org.aspectj</groupId>
              <artifactId>aspectjweaver</artifactId>
              <version>${aspectjweaver-version}</version>
          </dependency>
          <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-api</artifactId>
              <version>${slf4j-api-version}</version>
          </dependency>
          <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-log4j12</artifactId>
              <version>${slf4j-log4j12-version}</version>
          </dependency>
          <dependency>
              <groupId>log4j</groupId>
              <artifactId>log4j</artifactId>
              <version>${log4j-version}</version>
          </dependency>
          <dependency>
              <groupId>org.apache.commons</groupId>
              <artifactId>commons-lang3</artifactId>
              <version>${commons-lang3-version}</version>
          </dependency>
          <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>${lombok-version}</version>
              <scope>provided</scope>
          </dependency>
      </dependencies>

3.配置切面 (log.xml)

需要改动下面加粗的部分

<aop:pointcut expression="execution(* com.caigaoqing.tech.log.controller..(..))" id="controllerLog"/>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:aop="http://www.springframework.org/schema/aop"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd">
	<!-- Controller 日志Aspect -->
	<bean id="logAuditAspectBean" class="com.caigaoqing.tech.aspect.LogAuditAspect"></bean>
	<aop:config>
		<aop:aspect id="logAuditAspect" ref="logAuditAspectBean">
			<aop:pointcut expression="execution(* com.caigaoqing.tech.log.controller.*.*(..))" id="controllerLog"/>
			<aop:around method="doAround" pointcut-ref="controllerLog"/>
			<!-- 前置通知 -->
			 <aop:before method="doBeforeInServiceLayer" pointcut-ref="controllerLog"/>
			 <!--后置通知 -->
			 <aop:after-returning method="doAfterInServiceLayer" pointcut-ref="controllerLog"/>
			 <!--环绕通知 -->
			 <aop:around method="doAround" pointcut-ref="controllerLog"/>
			 <!--异常通知 -->
			<aop:after-throwing method="printExLog" pointcut-ref="controllerLog" throwing="e"/>
		</aop:aspect>
	</aop:config>
</beans>

4.加入到IOC中

这个配置文件一定要放到web加载到能扫描的地方

<!-- Spring中引入其他配置文件 -->
<import resource="classpath*:log.xml" />

5.实现用户信息接口

这是由于分布式前后台分离一般不会在head或者业务数据中添加业务id,session一般都不使用,所以一般系统会采用token,实现这个接口getUserIdByToken是获取用户id,可自定义扩展就行,大概是这个以上。

import com.sharecharger.tech.log.api.UserInfoApi;
import org.springframework.stereotype.Service;

/**
 * @author 蔡高情
 * @Title: UserInfoServcieImpl
 * @ProjectName
 * @Description: 
 * @date 2018/8/7 000716:46
 */
@Service
public class UserInfoServcieImpl implements UserInfoApi {
    @Override
    public String getUserIdByToken(String token) {
        return "123";
    }
}

5.配置log打印

总的xml,下面会分析主要功能

 <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
    <!--日志组件打印log的格式-->
    <Property name="patternLayout">[%d{yyyy-MM-dd HH:mm:ss}][%-0p]%msg%n</Property>
     <!--日志组件打印log的名字,路径是logs下面 可以自行修改打印到共享存储中-->
    <Property name="logName">demo</Property>
</Properties>
<Appenders>
	<console name="LogConsole" target="SYSTEM_OUT">
        <!--输出日志的格式-->
        <PatternLayout pattern="${patternLayout}"/>
    </console>
    <!--这个输出控制台的配置-->
    <console name="Console" target="SYSTEM_OUT">
        <!--输出日志的格式-->
        <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
    </console>
    <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
    <File name="log" fileName="logs/test.log" append="false">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
    </File>
    <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
    <RollingFile name="RollingFileInfo" fileName="/home/elk/soft/logs/log.log"
      filePattern="/home/elk/soft/logs/log-$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
        <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
        <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="%m%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="100 MB"/>
        </Policies>
    </RollingFile>
    <RollingFile name="RollingFileWarn" fileName="logs/warn.log"
                 filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
        <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="100 MB"/>
        </Policies>
        <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
        <DefaultRolloverStrategy max="20"/>
    </RollingFile>
    <RollingFile name="RollingFileError" fileName="logs/error.log"
                 filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
        <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="100 MB"/>
        </Policies>
    </RollingFile>
    <!--demo log单独打印-->
    <RollingFile name="importDataLog" fileName="logs/${logName}.log"
                 filePattern="logs/$${date:yyyy-MM}/${logName}-%d{yyyy-MM-dd}-%i.log" 	  append="true">
        <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="${patternLayout}"/>
        <!--<SizeBasedTriggeringPolicy size="1MB"/>-->
        <DefaultRolloverStrategy max="10"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="100 MB"/>
        </Policies>
    </RollingFile>
</Appenders>
<Loggers>
    <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
    <logger name="org.springframework" level="INFO"></logger>
    <logger name="org.mybatis" level="INFO"></logger>
    <root level="all">
        <appender-ref ref="Console"/>
        <appender-ref ref="RollingFileWarn"/>
        <appender-ref ref="RollingFileError"/>
    </root>
    <logger name="com.caigaoqing.tech.aspect.LogAuditAspect" level="all" additivity="false">
        <appender-ref ref="importDataLog"></appender-ref>
        <appender-ref ref="LogConsole"></appender-ref>
    </logger>
    <logger name="com.example.demo.service.LoggerTest" level="all" additivity="false">
        <appender-ref ref="RollingFileInfo"></appender-ref>
    </logger>
</Loggers>
</Configuration>

定义log打印的位置,样式,名字

<Properties>
    <!--日志组件打印log的格式-->
    <Property name="patternLayout">[%d{yyyy-MM-dd HH:mm:ss}][%-0p]%msg%n</Property>
     <!--日志组件打印log的名字,路径是logs下面 可以自行修改打印到共享存储中-->
    <Property name="logName">demo</Property>
</Properties>

 <RollingFile name="importDataLog" fileName="logs/${logName}.log"
                 filePattern="logs/$${date:yyyy-MM}/${logName}-%d{yyyy-MM-dd}-%i.log" 	  append="true">
        <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="${patternLayout}"/>
        <!--<SizeBasedTriggeringPolicy size="1MB"/>-->
        <DefaultRolloverStrategy max="10"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="100 MB"/>
        </Policies>
    </RollingFile>

<console name="LogConsole" target="SYSTEM_OUT">
        <!--输出日志的格式-->
        <PatternLayout pattern="${patternLayout}"/>
  </console>

说明:

Properties中配置动态的东西,方便修改

    RollingFile  滚动打印,以及指定路径,样式,打印方式,打印级别

   LogConsole控制台打印

<logger name="com.caigaoqing.tech.aspect.LogAuditAspect" level="all" additivity="false">
        <appender-ref ref="importDataLog"></appender-ref>
        <appender-ref ref="LogConsole"></appender-ref>
 </logger>

那个类使用这个打印,就是规定哪个类去打印上面的使用指定LogAuditAspect打印的东西全部放到 logs/${logName}.log中。

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/CaiGaoQing/log-component-demo.git
git@gitee.com:CaiGaoQing/log-component-demo.git
CaiGaoQing
log-component-demo
log-component-demo
master

搜索帮助

14c37bed 8189591 565d56ea 8189591