美文网首页
关于日志打包的一些用法

关于日志打包的一些用法

作者: sunyelw | 来源:发表于2019-08-22 20:59 被阅读0次

日志几乎是一个项目的第二最重要的东西,而繁多的日志框架、各种依赖版本冲突 ,真的是头都疼。

一般项目满足以下条件就差不多了

  • 基本日志输出, 能打成可执行jar包
  • 日志的持久化, 入文件

SpringBoot+Mybatis+Druid+log4j 日志打包


  • SpringBoot自带的日志功能关闭
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <!-- 切换log4j2日志读取 -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 添加Mybatis依赖
<!-- log-file config start -->
<!-- 配置 log4j2 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 识别 log4j2.yml文件 -->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.8.10</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.6</version>
</dependency>
<!-- log-file config end -->
  • 添加log4j.xml
Appenders:
    Console:  # 输出到控制台
      name: CONSOLE # Appender命名
      target: SYSTEM_OUT
      PatternLayout:
        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) --- %m%n"
    RollingFile: # 输出到文件,超过256MB归档
      - name: ROLLING_FILE
        ignoreExceptions: false
        fileName: file.log
        filePattern: "${date:yyyy-MM}-%d{yyyy-MM-dd}-%i.log.gz"
        PatternLayout:
          pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) --- %m%n"
        Policies:
          SizeBasedTriggeringPolicy:
            size: "256 MB"
        DefaultRolloverStrategy:
          max: 100
Loggers:
    Root:
      level: info
      AppenderRef:
        - ref: CONSOLE
        - ref: ROLLING_FILE
    Logger:
      - name: com.example.mybatis.dao # 对dao层开启debug模式, 可以看到SQL
        additivity: false
        level: debug
        AppenderRef:
          - ref: CONSOLE
  • SpringBoot方式打可执行jar
<build>
    <finalName>video_black_incs</finalName>
    <plugins>
        <!-- 打 数据源+日志 的可执行依赖包 -->
        <!-- 什么 shade、assembly 都是垃圾 -->
        <!-- 楼上+1 -->
        <!-- 楼上+1 -->
        <!-- 楼上+1 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 工程主入口-->
                <mainClass>com.asia.hy.increment.IncrementHandle</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • 数据源监控
  1. 过滤器
import com.alibaba.druid.support.http.WebStatFilter;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

@WebFilter(
        urlPatterns = "/",
        initParams = {
                @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*")
        }
)
public class DruidStatFilter extends WebStatFilter {
}
  1. 监控器
import com.alibaba.druid.support.http.StatViewServlet;

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet(
        urlPatterns = {"/druid/*"},
        initParams = {
                @WebInitParam(name = "loginUsername", value = "admin"),
                @WebInitParam(name = "loginPassword", value = "test"),
                @WebInitParam(name = "resetEnable", value = "false")
        }
)
public class DruidStatViewServlet extends StatViewServlet {
}

访问(账密上面配置)

http://localhost:8080/druid/login.html

相关文章

  • 关于日志打包的一些用法

    日志几乎是一个项目的第二最重要的东西,而繁多的日志框架、各种依赖版本冲突 ,真的是头都疼。 一般项目满足以下条件就...

  • R026---UiPath的Robot日志

    ​一、缘起 应网友邀请,写个关于日志用法文章。 UiPath版本:2.3。 UiPath中有很多种日志:Setup...

  • Java好文收集

    Java日志 Java日志终极指南关于日志记录的一些感想 Spring测试 testing-improvement...

  • 打印文件中指定的内容

    如题所示,常常用于筛选出nginx日志中指定的内容需要结合cat,sort,awk,uniq关于linux用法,大...

  • Gradle配置多渠道打包

    多渠道打包 引用外链 productFlavors的全部用法 productFlavors的全部用法 androi...

  • 研究了一下 Webpack 打包原理,顺手挣了个 AirPods

    这些年,Webpack 基本成了前端项目打包构建的标配。关于它的原理和用法的文章在网上汗牛充栋,大家或多或少都看过...

  • About Log

    关于日志的一些记录 日志级别 日志记录器(Logger)的行为是分等级的。分为OFF、FATAL、ERROR、WA...

  • logrotate命令

    说明 logrotate命令是一个日志分割命令 用法 这里以 nginx日志为例 开启日志功能 配置日志分割规则 ...

  • Jenkins+fir 上传更新日志

    iOS开发自动打包应该很多人用了,但是其中还有一些地方不够完美,比如说打包上传成功fir和邮件没有更新日志内容,嗯...

  • 关于cocoapods的一些用法

    其实我们知道MacOS、iOS系统衍生于Unix,而一切皆文件是Unix的主要设计思路之一。在系统中文件并不...

网友评论

      本文标题:关于日志打包的一些用法

      本文链接:https://www.haomeiwen.com/subject/ergosctx.html