当前位置: 首页 > news >正文

日志分割问题

SpringBoot版本使用2.3

maven打包

build部分代码如下

    <build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><version>3.1.0</version><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>com.test.Application</mainClass></manifest></archive><excludes><exclude>*.properties</exclude><exclude>*.sh</exclude><exclude>*.bat</exclude><exclude>*.xml</exclude></excludes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/${project.artifactId}/lib</outputDirectory></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><id>deploy</id><phase>package</phase><goals><goal>run</goal></goals><configuration><target><copy todir = "${project.build.directory}/${project.build.finalName}" file = "${project.build.directory}/${project.build.finalName}.${project.packaging}"></copy><copy todir = "${project.build.directory}/${project.build.finalName}/config/" file = "${project.build.directory}/classes/application-dev.properties"></copy><move file="${project.build.directory}/${project.build.finalName}/config/application-dev.properties" tofile="${project.build.directory}/${project.build.finalName}/config/application.properties"/><copy todir = "${project.build.directory}/${project.build.finalName}/config/" file = "${project.build.directory}/classes/seata.conf"></copy><copy todir = "${project.build.directory}/${project.build.finalName}/config/" file = "${project.build.directory}/classes/logback-spring.xml"></copy><copy todir = "${project.build.directory}/${project.build.finalName}" file = "${project.basedir}/src/bin/start.sh"></copy><copy todir = "${project.build.directory}/${project.build.finalName}" file = "${project.basedir}/src/bin/stop.sh"></copy><copy todir = "${project.build.directory}/${project.build.finalName}" file = "${project.basedir}/src/bin/deploy.sh"></copy><copy todir = "${project.build.directory}/${project.build.finalName}" file = "${project.basedir}/src/bin/Dockerfile"></copy><copy todir = "${project.build.directory}/${project.build.finalName}" file = "${project.basedir}/src/bin/run.bat"></copy></target></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build>

application.properties配置

部分关键配置如下:

logging.config=config/logback.xml
logging.level.root=ERROR
logging.level.com.test=INFO
logging.file.max-history=7
logging.file.max-size=100MB

编译后目录结构

├ config
│ ├ application.properties
│ ├ logback.xml
│ ├ seata.conf
├ lib
│ ├ accessors-smart-1.2.jar
│ ├ android-json-0.0.20131108.vaadin1.jar
│ ├ …
├ demo.jar
├ deploy.sh
├ Dockerfile
├ run.bat
├ start.sh
├ stop.sh

logback.xml配置

这使用的是自定义配置,主要修改这个文件即可,如果在logback中需要使用application.properties中配置信息,使用springProperty配置即可,source对应的就是application.properties中的配置项,xml中使用${LOG_SIZE}即可。

<?xml version="1.0" encoding="UTF-8"?>
<configuration><statusListener class="ch.qos.logback.core.status.NopStatusListener"/><property name="LOG_HOME" value="logs"/><property name="APP_NAME" value="demo"/><springProperty scope="context" name="LOG_SIZE" source="logging.file.max-size"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %msg [%thread]\(%c:%L\)%n</pattern></encoder></appender><appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/${APP_NAME}.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/${APP_NAME}.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern><maxFileSize>${LOG_SIZE}</maxFileSize><maxHistory>5</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %msg [%thread]\(%c:%L\)%n</pattern></encoder></appender><appender name="ERRORLOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/${APP_NAME}-err.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/${APP_NAME}-err.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern><maxFileSize>${LOG_SIZE}</maxFileSize><maxHistory>5</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %msg [%thread]\(%c:%L\)%n</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><root level="ERROR"><appender-ref ref="STDOUT"/><appender-ref ref="FILELOG"/><appender-ref ref="ERRORLOG"/></root><logger name="com.test" level="INFO"/></configuration>

deploy.sh

#!/bin/shapp_name=demo
docker stop $app_name
docker rm -f $app_name
docker rmi $app_name:latest
docker build -t $app_name:latest .
docker run -d --network=host --name $app_name \
-v /data/app/$app_name/logs:/opt/app/logs \
-v /data/app/$app_name/config:/opt/app/config \
$app_name:latest

Dockerfile

FROM adoptopenjdk/openjdk8:aarch64-ubuntu-jre8u352-b05-ea-nightly
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /opt/app/logs
RUN mkdir -p /opt/app/config
RUN mkdir -p /opt/app/lib
WORKDIR /opt/appADD lib/ /opt/app/lib
COPY demo.jar /opt/app/demo.jarCMD java -Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/app/logs/demo.hprof -jar /opt/app/demo.jar --spring.config.location=/opt/app/config/  > /opt/app/logs/demo.log 2>&1#CMD while true; do sleep 1; doneEXPOSE 8080

start.sh

#!/bin/shSH_DIR=$(cd `dirname $0`;pwd)
java_home=env|grep "JAVA_HOME";
latestjar=`ls $SH_DIR -lt | grep '.jar'| awk '{print $9}' | sed -n '1p'`
echo 'Start:'$latestjar
process_exists=`ps -ef|grep $latestjar|grep -v grep|awk '{print $2}'`
if [ -n "${process_exists}" ];thenkill -9 ${process_exists}
fi
if [ ! -n "$java_home" ]; thencd $SH_DIR/nohup java -Xms100m -Xmx2g -jar $SH_DIR/$latestjar --spring.config.location=$SH_DIR/config/ > /dev/null 2>&1 &echo "Application is started";cd -;exit;
elsejava -version;if [ $? -eq 0 ]; thencd $SH_DIR/nohup java -Xms100m -Xmx2g -jar $SH_DIR/$latestjar --spring.config.location=$SH_DIR/config/ > /dev/null 2>&1 &elseecho "This system has no jdk";cd -;exit;fi
fi

stop.sh

#!/bin/sh
SH_DIR=$(cd `dirname $0`;pwd)
java_home=env|grep "JAVA_HOME";
latestjar=`ls $SH_DIR -lt | grep '.jar'| awk '{print $9}' | sed -n '1p'`
echo 'Stop:'$latestjar
process_exists=`ps -ef|grep $latestjar|grep -v grep|awk '{print $2}'`
if [ -n "${process_exists}" ];thenkill -9 ${process_exists}
fi
echo "Application stop sucess"

相关文章:

  • 从大数据到大模型:我们是否在重蹈覆覆辙
  • 数据库连接池深度研究分析报告
  • 学习昇腾开发的第二天--PC机远程登录开发板
  • 2.4 机器人运动控制
  • leetcode_503 下一个更大元素
  • 从汇编的角度揭开C++ this指针的神秘面纱(上)
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月14日第108弹
  • Java线程安全计数器实现方案
  • tcp, udp , 与 select .
  • pycharm2020.2版本给项目选择了虚拟环境解释器,项目文件都运行正常,为什么terminal文件路径的前面没有虚拟解释器的名称
  • http的缓存问题
  • 0到1案例演示 vue + axios 请求 springboot 的 restful 风格接口(前后端分离+跨域问题)
  • Zookeeper 3.8.4 安装部署帮助手册
  • CTF题目:Apache Flink目录遍历漏洞实战及CVE-2020-17519漏洞分析
  • HTML+CSS 实现注册登录切换效果
  • PC 基准测试工具 3D Mark 登陆 macOS
  • 14.vue.js的watch()的注意事项(1)
  • 使用 Azure LLM Functions 与 Elasticsearch 构建更智能的查询体验
  • Go语言底层(四): 深入浅出Go语言的ants协程池
  • 痉挛性斜颈:认识颈部的 “异常挛动”
  • 简单网站设计模板/惠州seo整站优化
  • 网站做百度推广能获取流量吗/企业网络推广技巧
  • 手机端网站关键词排名/南京百度提升优化
  • 确保网站地址没有做301跳转/百度域名注册查询
  • 网站标题在线制作/名站在线
  • 火是用什么做的视频网站/怎么注册域名