java应用程序如何自定义log4j配置文件的位置

目录
  • 自定义log4j配置文件的位置
    • 使用log4j很方便
  • log4j因配置文件放置位置出错

自定义log4j配置文件的位置

使用log4j很方便

1、添加依赖的log4j-1.2.8.jar包;

2、增加log4j.properties配置文件,但这个配置文件应该放在哪个目录下比较合适,今天来讨论下:如何自定义配置文件的存放位置,尤其是代码需要打包运行的时候就需要考虑这个问题。

一般情况,不论是java应用程序还是web程序,代码编译成功且能正常运行的情况下,log4j.properties配置文件会在com的同级目录下有一个拷贝,如图所示为java工程和web工程,都可以正常打印输出日志信息。

该java工程的bin目录下和com同级有一个log4j.properties的拷贝。

该web工程的classes目录下和com同级有一个log4j.properties的拷贝。

当java代码需要打包运行的时候,将log4j.properties配置文件存放到指定目录是个比较好的选择,便于发布和维护,如图就是将已发布好的目录结构,应用代码打包成rwd_app.jar,配置文件放到config目录下,代码运行时从自定义的目录中加载日志配置文件。

log4j因配置文件放置位置出错

ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2

jar版本

log4j-1.2.17;log4j-api-2.11.1;log4j-core-2.11.1

因为学习Mybatis初次接触到log4j,出现以上的的报错信息。

通过它的报错信息可以知道缺少配置文件,但是我们已经在资源文件夹下创建了对应的文件目录及log4j.properties配置文件。

网上某些解决办法是由于我们的log4kj是2.x版本,所以配置文件设置的是log4j2.xml,以下是它的内容,在官方文档上可以找到。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

可是创建这个文件后依旧是这个错误,那么我就怀疑是不是log4j包里面设置的就是在资源文件夹的根目录下,移动到根目录下果然问题解决了。目录层级如下图:

新的问题是如果把之前创建的log4j.properties配置文件放到资源文件夹根目录下是不是有效。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

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

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

  • java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    log4j输出多个自定义日志文件 如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: 复制代码 代码如下: log4j.rootLogger=DEBUG, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layo

  • 详解Log4j 日志文件存放位置设置

    以DailyRollingFileAppender 为例:假设每天一个日志文件 有以下设置: log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=app.log log4j.appender.A1.DatePattern='.'yyyy-MM-dd log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.append

  • 详解Java中log4j.properties配置与加载应用

    log4j.properties总结: 一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN. I

  • java应用程序如何自定义log4j配置文件的位置

    目录 自定义log4j配置文件的位置 使用log4j很方便 log4j因配置文件放置位置出错 自定义log4j配置文件的位置 使用log4j很方便 1.添加依赖的log4j-1.2.8.jar包: 2.增加log4j.properties配置文件,但这个配置文件应该放在哪个目录下比较合适,今天来讨论下:如何自定义配置文件的存放位置,尤其是代码需要打包运行的时候就需要考虑这个问题. 一般情况,不论是java应用程序还是web程序,代码编译成功且能正常运行的情况下,log4j.properties配

  • 基于java读取并引用自定义配置文件

    首先在resources目录创建自定义的配置文件 配置文件的格式: 写工具类,得到配置参数 import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class MyConfig { public static Properties myProp = new Properties(); public static InputStream myResource = MyCo

  • 在Java中使用日志框架log4j的方法

    日志就是记录程序的运行轨迹,方便快速定位问题 如果用System.out.println(),信息是打印在控制台.等到产品上线后没有控制台,如果有报错信息,根本不知道去哪里看,就不知道是哪里出错. 而且开发的时候希望打印输出的内容多.方便排查,上线后只希望打印容易出错的部分.System.out.println()满足不了这个需求 而日志框架可以让错误信息输出到多个指定文件,不同的文件有不同的输出内容.方便排错,定位错误 一.log4j介绍 Log4j有三个主要的组件/对象:Loggers(记录

  • Java中@ConfigurationProperties实现自定义配置绑定问题分析

    目录 @ConfigurationProperties使用 @ConfigurationProperties特点 宽松绑定 支持复杂属性类型 激活@ConfigurationProperties 通过@EnableConfigurationProperties 通过@ConfigurationPropertiesScan @ConfigurationProperties与@Value对比 使用 Spring Boot Configuration Processor 完成自动补全 @Configu

  • 自定义log4j日志文件命名规则说明

    目录 自定义log4j日志文件命名规则 根据log4j的API定义自己的FileAppender 对应的log4j.properties的配置文件如下 输出的日志文件命名如下 log4j自定义生成文件的名称 log4j.properties MyRollingFileAppender.java 自定义log4j日志文件命名规则 项目中的日志需要采用一致的命名规范和文件规范,命名规则为:项目模块标识_index_日期时间_日志级别.log,且每个级别日志文件放在单独的文件夹,且每个文件夹下日志的数

  • 在SpringBoot下读取自定义properties配置文件的方法

    SpringBoot工程默认读取application.properties配置文件.如果需要自定义properties文件,如何读取呢? 一.在resource中新建.properties文件 在resource目录下新建一个config文件夹,然后新建一个.properties文件放在该文件夹下.如图remote.properties所示 二.编写配置文件 remote.uploadFilesUrl=/resource/files/ remote.uploadPicUrl=/resource

  • Java注解Annotation与自定义注解详解

    一:Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识该方法继承自超类, 当父类的方法被删除或修改了,编译器会提示错误信息(我们最经常看到的toString()方法上总能看到这货) @Deprecated:表示该类或者该方法已经不推荐使用,已经过期了,如果用户还是要使用,会生成编译的警告 @SuppressWarnings:用于忽略的编译器警告信息

  • 如何使用JCTools实现Java并发程序

    概述 在本文中,我们将介绍JCTools(Java并发工具)库. 简单地说,这提供了许多适用于多线程环境的实用数据结构. 非阻塞算法 传统上,在可变共享状态下工作的多线程代码使用锁来确保数据一致性和发布(一个线程所做的更改对另一个线程可见). 这种方法有许多缺点: 线程在试图获取锁时可能会被阻塞,在另一个线程的操作完成之前不会取得任何进展-这有效地防止了并行性 锁争用越重,JVM处理调度线程.管理争用和等待线程队列的时间就越多,实际工作就越少 如果涉及多个锁,并且它们以错误的顺序获取/释放,则可

  • 自定义log4j.properties的加载位置方式

    目录 自定义log4j.properties加载位置 方法一 方法二 方法三 log4j.properties自定义路径 在web.xml 下面配这些参数 自定义log4j.properties加载位置 方法一 在main函数中添加如下代码 public class App { static final Logger logger = Logger.getLogger(App.class); public static void main( String[] args ) { PropertyC

  • 通过自定制LogManager实现程序完全自定义的logger

    目录 引言 怎么实现自定义的LogManager 自定义的LogManager中使用到的ServerFileHandler 实现Formatter 前一篇博文介绍了JDK logging基础知识 博文中也提到LogManager,本章主要阐述怎么完全定制化LogManager来实现应用程序完全自定制的logger,其实对于大多数开发者来说,很少有需要定制LogManager的时候,只有是需要单独开发一个产品,需要完全独立的logger机制时才有可能需要定制LogManager,比如: 1,希望自

随机推荐