服务器目录
给文件夹权限。
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>-->
<!-- <!– 单个日志大小 –>-->
<!-- <maxFileSize>${logback.maxFileSize}</maxFileSize>-->
<!-- <!– 日志保存周期 –>-->
<!-- <maxHistory>${logback.maxHistory}</maxHistory>-->
<!-- <!– 总大小 –>-->
<!-- <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"> -->
<!--<!–日志异步到数据库 –> -->
<!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> -->
<!--<!–连接池 –> -->
<!--<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>