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

springboot jar 配置文件同级目录 启动脚本sh 并添加日志文件,日志文件定时分文件

为了创建一个Spring Boot应用的启动脚本,并且配置日志输出到一个会定期分割的日志文件中,你可以按照以下步骤来进行:

  1. 创建启动脚本:首先,创建一个shell脚本文件,比如命名为start-your-app.sh

  2. 配置日志文件:使用logback.xml或者application.properties来配置日志输出。如果你的应用已经有一个日志配置文件,那么你可能只需要稍微修改一下配置即可。

  3. 日志文件滚动配置:通常使用logback<rollingFile>标签来配置日志滚动策略。

以下是一个基本的start-your-app.sh脚本示例:

#!/bin/bash# 设置工作目录为脚本所在目录
WORK_DIR=$(dirname "$0")
cd "$WORK_DIR"# 设置JVM参数
JAVA_OPTS="-Xmx512m -Xms512m -Dspring.profiles.active=prod -Djava.security.egd=file:/dev/./urandom"# 设置日志文件路径
LOG_FILE="$WORK_DIR/app.log"# 启动Spring Boot应用
nohup java $JAVA_OPTS -jar your-app.jar > "$LOG_FILE" 2>&1 &echo "Application started, check logs in $LOG_FILE"

在这个脚本中:

  • JAVA_OPTS用于设置JVM参数,例如内存分配和环境变量。
  • LOG_FILE定义了日志文件的位置。
  • nohup命令使得进程可以在后台持续运行,即使关闭了终端窗口。
  • > "$LOG_FILE" 2>&1将标准输出和错误重定向到指定的日志文件。

接下来,你需要配置日志文件的滚动策略。假设你的Spring Boot应用使用的是logback.xml进行日志配置,可以添加或修改如下配置:

<configuration><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- daily rollover --><fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern><!-- keep 30 days' worth of history --><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="FILE" /></root>
</configuration>

这个logback.xml配置中的<rollingPolicy>部分指定了日志文件每天自动滚动一次,并保留最近30天的日志文件。

最后,确保给你的启动脚本添加执行权限:

chmod +x start-your-app.sh

这样,你可以通过运行./start-your-app.sh来启动你的Spring Boot应用,并且日志会被记录到logs/app.log及其滚动文件中。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RedisDistributedLock 分布式锁
  • Ubuntu 22.04上稳定安装与配置搜狗输入法详细教程
  • 分享一个基于文本挖掘的微博舆情分析系统Python网络舆情监控系统Flask爬虫项目大数据(源码、调试、LW、开题、PPT)
  • 基于深度学习的智能工厂优化
  • 光伏对国内各行各业的影响
  • linux 提权
  • 【QT代码控制Linux开发板】QT控制嵌入式Linux开发板运行shell脚本
  • 证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别
  • ResNet网络学习
  • 幂等性是什么意思?
  • 基于Shader实现的UGUI描边解决方案遇到的bug
  • UE基础 —— 打包项目
  • leetcode47. 全排列 II有重复元素的全排列,深度优先搜索
  • 【022】字符串的处理(输出,分割,删除,新增,替换,查找,长度)_#VBA
  • c++11异常
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Apache的基本使用
  • C++入门教程(10):for 语句
  • iOS 系统授权开发
  • Java程序员幽默爆笑锦集
  • Java-详解HashMap
  • Python socket服务器端、客户端传送信息
  • Python中eval与exec的使用及区别
  • Spring声明式事务管理之一:五大属性分析
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 初识MongoDB分片
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 规范化安全开发 KOA 手脚架
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 温故知新之javascript面向对象
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 走向全栈之MongoDB的使用
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 组复制官方翻译九、Group Replication Technical Details
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #pragma pack(1)
  • #QT 笔记一
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (11)MATLAB PCA+SVM 人脸识别
  • (70min)字节暑假实习二面(已挂)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (论文阅读40-45)图像描述1
  • (十八)Flink CEP 详解
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1