Logback日志存放路径不统一解决方案

问题:

  将一个应用程序打成了Jar包后,使用命令运行jar包,发现日志存放的路径并不统一:

  • 比如 hello.jar 包放在 /aaa/bbb 目录下
  • 如果在 /aaa/bbb 目录下执行:java -jar hello.jar ,那么日志就会存放在 /aaa/bbb 目录下
  • 如果在 /aaa 目录下执行:java -jar bbb/hello.jar ,那么日志就会存放在 /aaa 目录下

  如何才能不同位置执行jar包,但是日志放到一个统一的目录中呢?

解决过程:

  查看logback.xml中与日志路径相关的部分如下:

<timestamp key="bySecond" datePattern="yyyyMMdd'-'HHmmss"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>result-${bySecond}.log</file>
  <append>true</append>
  <encoder>
    <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
  </encoder>
</appender>

  <file>result-${bySecond}.log</file>指定了存放日志的名称,是result-yyyyMMdd-HHmmss.log格式

  其实这里也可以指定路径的,比如:<file>/home/xxx/logs/result-${bySecond}.log</file>

  如果能够把这个绝对路径配置一下就好了,而且是在程序外部,这样方便了打成jar包以后也能配置
  比如:<file>${logback.home}/result-bySecond.log</file>,在外部指定{logback.home}就可以

  “随着通用日志组件转入 Slf4j,logback 也变成了默认的日志实现,像 log4j 一样,logback.xml 中也可以使用系统属性或环境变量,如 ${catalina.home}。”

  既然logback是可以使用系统属性的,那就可以使用java -D 配置系统属性啊
  如下:java -Dlogback.home="/home/xxx/logs" -jar hello.jar

  问题解决!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot日志技术logback原理及配置解析

    一.logback日志技术介绍 Spring Boot中使用的日志技术为logback.其与Log4J都出自同一人,性能要优于Log4J,是Log4J的替代者. 在Spring Boot中若要使用logback,则需要具有spring-boot-starter-logging依赖,而该依赖被spring-boot-starter-web所依赖,即不用直接导入spring-boot-starter-logging依赖. 二.添加配置属性 该文件名为logback.xml,且必须要放在src/mai

  • 基于logback 实现springboot超级详细的日志配置

    前言 java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj4f 并不是一种日志框架,它相当于定义了规范,实现了这个规范的日志框架就能够用 slj4f 调用).其中性能最高的应该使 logback 了,而且 springboot 默认使用的也是 logback 日志,所以本篇将会详细的讲解 logback 的日志配置方案. 本篇主要内容如下: •logback 配置文件的构成 •如何将日志输出到文件 •如何按时间,按大小切分日志 •如何将让一个日志文件中只有

  • Spring boot使用logback实现日志管理过程详解

    Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计.本篇就是来看看如何使用logback. 1.导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency&g

  • SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)

    关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细) 我在这就开门见山直接介绍我们项目日志的配置使用吧!~ 1.基本介绍 默认情况下,Spring Boot项目就会用Logback来记录日志,并用INFO级别输出到控制台.如下图: 实际开发中我们不需要直接添加logback日志依赖. 你会发现 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 lo

  • Spring Boot异步输出Logback日志方法详解

    一.介绍 1.1 Logback Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能 1.2 日志级别 包括:TRACE.DEBUG.INFO.WARN

  • SpringBoot logback日志框架使用过程解析

    一.基本知识说明 SpringBoot默认使用logback作为日志框架 ,所以引入起步依赖后就可以直接使用logback,不需要其他依赖. SpringBoot会默认加载classpath:logback.xml或者classpath:logback-spring.xml 作为日志的配置文件,在springboot项目中可以直接把日志配置文件放在resources目录下. 简单使用时也可以不使用日志配置文件,将日志相关的配置直接放在application.yml中,如下 #日志设置 loggi

  • Spring Boot整合logback一个简单的日志集成架构

    一.业务需求 在项目开发和运维过程中需要通过日志来分析问题,解决问题以保证项目的正常运行.通过SpringBoot自带的日志管理相对比较简单,已无法满足日常的运维需求,需要对日志文件进行分时分类管理,刚好通过学习接触到了logback日志系统.因此便决定将其加入到项目框架之中. 二.logback简介 至于简介,可自行网上查阅相关文档文献,这里不做详细描述,毕竟不是本文主要目的.只需理解它很好的实现了slf4j,是log4j的再发展即可. 三.具体实施方案(仅供参考) 1.引入依赖包 其实不需要

  • 基于spring boot 日志(logback)报错的解决方式

    记录一次报错解决方法: No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.String>] org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.le

  • Logback日志存放路径不统一解决方案

    问题: 将一个应用程序打成了Jar包后,使用命令运行jar包,发现日志存放的路径并不统一: 比如 hello.jar 包放在 /aaa/bbb 目录下 如果在 /aaa/bbb 目录下执行:java -jar hello.jar ,那么日志就会存放在 /aaa/bbb 目录下 如果在 /aaa 目录下执行:java -jar bbb/hello.jar ,那么日志就会存放在 /aaa 目录下 如何才能不同位置执行jar包,但是日志放到一个统一的目录中呢? 解决过程: 查看logback.xml中

  • SpringBoot快速集成Logback日志组件

    目录 前言 引入: 配置: 开发: 结语 前言 在前一节的分享中,慕歌向大家介绍了如何使用spring boot 实现简单的邮寄发送服务,用于验证码服务或者是通知服务.如果大家有兴趣,慕歌还想向大家进一步分享,如何在使用第三方服务,实现手机短信通知服务,就是那个我们每天都会使用到的短信验证码,通知服务.这一节慕歌想带来spring boot日志系统的分享,以及慕歌自己的实现的简易日志记录,慕歌会将日志同时保存在文件和数据库之中. 引入: 如果我们使用 logback 就无需额外引入依赖,在spr

  • 使用Logback日志保存到相对路径的操作

    说明 在使用Logback中需要保存输出日志,但是却在保存的时候路径出现问题 项目背景 1.Win7 2.Java Web + Tomcat 7.0(在D盘目录下) 3.Logback 1.1.7 案例一 Logback.xml文件配置 <!-- 路径名称 --> <property name="log.base" value="logs" /> <!-- 保存的文件名 --> <property name="lo

  • pyinstaller打包可执行文件,存放路径包含中文无法运行的解决方案

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.问题描述 1.使用如上环境,pyinstaller打包生成的exe文件,存放在本地,如果路径中包含中文,程序无法运行:exe程序如果使用中文命名,程序同样无法运行. 三.解决方式 1.查看pyinstaller网站 https://pypi.org/project/PyInstaller/ 2.有如下描述 3.更换实

  • jdk-logging log4j logback日志系统实现机制原理介绍

    目录 1 需要解决的疑惑 2 jdk自带的logging 2.1 使用案例 2.2 简单过程分析: 3 log4j1 3.1 使用案例 3.1.1 需要的jar包 3.1.2 使用方式 3.2 获取Logger的原理 3.3 主要对象总结 4 log4j2 4.1 背景介绍 4.2 log4j2的使用案例 4.2.1 需要的jar包 4.2.2 使用方式 4.3 使用过程简单分析 4.4 主要对象总结 5 logback 5.1 使用案例 5.1.1 需要的jar包 5.1.2 使用方式 5.3

  • Java 配置log4j日志文件路径 (附-获取当前类路径的多种操作)

    1 日志路径带来的痛点 Java 项目中少不了要和log4j等日志框架打交道, 开发环境和生产环境下日志文件的输出路径总是不一致, 设置为绝对路径的方式缺少了灵活性, 每次变更项目路径都要修改文件, 目前想到的最佳实现方式是: 根据项目位置自动加载并配置文件路径. 本文借鉴 Tomcat 的配置方式 "${catalina.home}/logs/catalina.out", 通过相对路径的方式设置日志的输出路径, 有其他解决方案的小伙伴, 请直接评论区交流哦

  • spring boot使用logback日志级别打印控制操作

    因为公司业务需要,需要把性能日志和业务日志分开打印,用elk收集处理,所以需要对不同的业务的日志,打印到不同文件. 使用的是spring boot自带的logback. 首先在yml文件配置logback.xml文件,默认会从resources下找logback.xml文件,找不到会从yml文件中找logging.config下的指定文件. logging: level: DEBUG config: classpath:logback.xml logback.xml是logback的配置文件,可

  • jcl与jul log4j1 log4j2 logback日志系统机制及集成原理

    目录 apache commons-logging 1 简单的使用案例 2 使用原理 1 获取LogFactory的过程 2 根据LogFactory获取Log的过程 commons-logging与jul集成 1 需要的jar包 2 使用案例 3 使用案例分析 1 获取获取LogFactory的过程 2 根据LogFactory获取Log的过程 commons-logging与log4j1集成 1 需要的jar包 4.2 使用案例 3 使用案例分析 1 获取获取LogFactory的过程 2

  • springboot]logback日志框架配置教程

    目录 一.application配置文件实现日志配置 日志格式占位符 二.使用logback-spring.xml实现日志配置 2.1.需求 2.2.需求实现 2.3.测试一下 logback既可以通过application配置文件进行日志的配置,又可以通过logback-spring.xml进行日志的配置.通常情况下,使用全局配置文件application.yml或properties进行配置就足够了,如果您的日志输出需求特别复杂而且需求比较个性化,可以考虑使用logback-spring.x

  • SpringBoot应用自定义logback日志详解

    目录 概述 logback配置详解 配置内容概念介绍 配置介绍 SpringBoot中自定义logback 多环境输出日志文件 读取配置文件配置 概述 默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件.如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径.日志格式等.复杂的场景(区分 info 和 error 的日志.每天产生一个日志文件等)满足不了,只能自定义配

随机推荐