可信通话项目总结(一)项目脚本启动、关闭、日志目录

服务器目录

可信通话项目总结(一)项目脚本启动、关闭、日志目录
给文件夹权限。

sudo chmod 777 -R *
  • config:
    配置文件 信息:包括yml配置文件、logback日志配置文件。
    可信通话项目总结(一)项目脚本启动、关闭、日志目录

  • logs:
    保存的日志文件的位置

可信通话项目总结(一)项目脚本启动、关闭、日志目录

  • pids:
    保存的端口号信息。
    可信通话项目总结(一)项目脚本启动、关闭、日志目录

启动脚本

可信通话项目总结(一)项目脚本启动、关闭、日志目录

#!/bin/env bash

nohup java -Xms512m -Xmx1024m -Dfile.encoding=UTF-8 -jar as-video-business-0.0.1.jar --server.port=8081 --spring.profiles.active=test > /dev/null 2>&1 & echo $! > ./pids/run.pid
  • 指定jar包
  • 指定内存
  • 指定配置文件(打包时的指定的环境无关)
  • 指定端口号
  • 使用nohup后台运行并获取pid(& echo $! > ./pids/run.pid)
  • nohup日志输出黑洞

/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”
2>/dev/null意思就是把错误输出到“黑洞” ;
/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞” ;

停止脚本

可信通话项目总结(一)项目脚本启动、关闭、日志目录

#!/bin/env bash

kill -9 `cat ./pids/run.pid`

日志文件

可信通话项目总结(一)项目脚本启动、关闭、日志目录
可信通话项目总结(一)项目脚本启动、关闭、日志目录

logback:
  path: ./logs
  zip.path: ./logs/zip
  maxFileSize: 1GB
  maxHistory: 3
  totalSizeCap: 5GB
  level: INFO

可信通话项目总结(一)项目脚本启动、关闭、日志目录

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration scan="true" scanPeriod="30 seconds">
    <include
            resource="org/springframework/boot/logging/logback/defaults.xml" />
    <springProperty scope="context" name="springAppName"
                    source="spring.application.name" />
    <springProperty scope="context" name="logback.path"
                    source="logback.path" />
    <springProperty scope="context" name="logback.zip.path"
                    source="logback.zip.path" />
    <springProperty scope="context"
                    name="logback.maxFileSize" source="logback.maxFileSize" />
    <springProperty scope="context"
                    name="logback.totalSizeCap" source="logback.totalSizeCap" />
    <springProperty scope="context"
                    name="logback.maxHistory" source="logback.maxHistory" />
    <springProperty scope="context" name="logback.level"
                    source="logback.level" />

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

    <property name="CONSOLE_LOG_PATTERN"
              value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />
    <!-- 控制台日志配置 -->
    <appender name="CONSOLE"
              class="ch.qos.logback.core.ConsoleAppender">
        <!-- 	<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>debug</level>
            </filter> -->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- <encoder> 格式化 <pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c{36} -
            %m%n</pattern> </encoder> -->
    </appender>

    <!-- 所有日志控制 -->
    <appender name="FILE_CONSOLE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${logback.path}/console.log</file>
        <!-- 是否追加 默认为true -->
        <append>true</append>
        <!-- 滚动策略 日期+大小 策略 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logback.zip.path}/%d{yyyy-MM-dd}/console/console-%i.zip</fileNamePattern>
            <!-- 单个日志大小 -->
            <maxFileSize>${logback.maxFileSize}</maxFileSize>
            <!-- 日志保存周期 -->
            <maxHistory>${logback.maxHistory}</maxHistory>
            <!-- 总大小 -->
            <totalSizeCap>${logback.totalSizeCap}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 格式化 -->
        <!-- <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c{36} - %m%n</pattern>
            </encoder> -->
    </appender>

    <!-- info级别日志控制 -->
    <appender name="FILE_INFO"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${logback.path}/info.log</file>
        <!-- 是否追加 默认为true -->
        <append>true</append>
        <!-- 滚动策略 日期+大小 策略 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logback.zip.path}/%d{yyyy-MM-dd}/info/info-%i.zip</fileNamePattern>
            <!-- 单个日志大小 -->
            <maxFileSize>${logback.maxFileSize}</maxFileSize>
            <!-- 日志保存周期 -->
            <maxHistory>${logback.maxHistory}</maxHistory>
            <!-- 总大小 -->
            <totalSizeCap>${logback.totalSizeCap}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 格式化 -->
        <!-- <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c{36} - %m%n</pattern>
            </encoder> -->
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- warn级别日志控制 -->
    <appender name="FILE_WARN"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${logback.path}/warn.log</file>
        <!-- 是否追加 默认为true -->
        <append>true</append>
        <!-- 滚动策略 日期+大小 策略 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logback.zip.path}/%d{yyyy-MM-dd}/warn/warn-%i.zip</fileNamePattern>
            <!-- 单个日志大小 -->
            <maxFileSize>${logback.maxFileSize}</maxFileSize>
            <!-- 日志保存周期 -->
            <maxHistory>${logback.maxHistory}</maxHistory>
            <!-- 总大小 -->
            <totalSizeCap>${logback.totalSizeCap}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 格式化 -->
        <!-- <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c{36} - %m%n</pattern>
            </encoder> -->
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ERROR级别日志控制 -->
    <appender name="FILE_ERROR"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${logback.path}/error.log</file>
        <!-- 是否追加 默认为true -->
        <append>true</append>
        <!-- 滚动策略 日期+大小 策略 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logback.zip.path}/%d{yyyy-MM-dd}/error/error-%i.zip</fileNamePattern>
            <!-- 单个日志大小 -->
            <maxFileSize>${logback.maxFileSize}</maxFileSize>
            <!-- 日志保存周期 -->
            <maxHistory>${logback.maxHistory}</maxHistory>
            <!-- 总大小 -->
            <totalSizeCap>${logback.totalSizeCap}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 格式化 -->
        <!-- <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c{36} - %m%n</pattern>
            </encoder> -->
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- Appender to log to file in a JSON format -->
<!--    <appender name="FILE_LOGSTASH"-->
<!--              class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <file>${logback.path}/json.log</file>-->
<!--        <rollingPolicy-->
<!--                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!--            <fileNamePattern>${logback.zip.path}/%d{yyyy-MM-dd}/json/json-%i.zip</fileNamePattern>-->
<!--            &lt;!&ndash; 单个日志大小 &ndash;&gt;-->
<!--            <maxFileSize>${logback.maxFileSize}</maxFileSize>-->
<!--            &lt;!&ndash; 日志保存周期 &ndash;&gt;-->
<!--            <maxHistory>${logback.maxHistory}</maxHistory>-->
<!--            &lt;!&ndash; 总大小 &ndash;&gt;-->
<!--            <totalSizeCap>${logback.totalSizeCap}</totalSizeCap>-->
<!--        </rollingPolicy>-->
<!--        <encoder-->
<!--                class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">-->
<!--            <providers>-->
<!--                <timestamp>-->
<!--                    <timeZone>UTC</timeZone>-->
<!--                </timestamp>-->
<!--                <pattern>-->
<!--                    <pattern>-->
<!--                        {-->
<!--                        "severity": "%level",-->
<!--                        "service": "${springAppName:-}",-->
<!--                        "trace": "%X{X-B3-TraceId:-}",-->
<!--                        "span": "%X{X-B3-SpanId:-}",-->
<!--                        "parent": "%X{X-B3-ParentSpanId:-}",-->
<!--                        "exportable":-->
<!--                        "%X{X-Span-Export:-}",-->
<!--                        "pid": "${PID:-}",-->
<!--                        "thread": "%thread",-->
<!--                        "class": "%logger{40}",-->
<!--                        "rest": "%message"-->
<!--                        }-->
<!--                    </pattern>-->
<!--                </pattern>-->
<!--            </providers>-->
<!--        </encoder>-->
<!--    </appender>-->

    <root level="${logback.level}">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE_CONSOLE" />
        <appender-ref ref="FILE_INFO" />
        <appender-ref ref="FILE_WARN" />
        <appender-ref ref="FILE_ERROR" />
<!--        <appender-ref ref="FILE_LOGSTASH" />-->
    </root>

    <!--日志异步到数据库 -->
    <!--<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> -->
    <!--&lt;!&ndash;日志异步到数据库 &ndash;&gt; -->
    <!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> -->
    <!--&lt;!&ndash;连接池 &ndash;&gt; -->
    <!--<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"> -->
    <!--<driverClass>com.mysql.jdbc.Driver</driverClass> -->
    <!--<url>jdbc:mysql://127.0.0.1:3306/databaseName</url> -->
    <!--<user>root</user> -->
    <!--<password>root</password> -->
    <!--</dataSource> -->
    <!--</connectionSource> -->
    <!--</appender> -->
</configuration>
上一篇:Spring Boot利用Logback输出日志到指定位置的简单配置及使用方式


下一篇:Spring Boot日志