使用 log4j2 进行 Spring 启动。配置 log4j2 Spring-lookup

2024-01-06

根据 log4j2 文档:

Spring Boot Lookup 从以下位置检索 Spring 属性的值 弹簧配置。此查找将返回空值,直到 Spring Boot 初始化应用程序日志记录。

<File name="Application" fileName="application.log">
  <PatternLayout>
    <pattern>%d %p %c{1.} [%t] $${spring:spring.application.name} %m%n</pattern>
  </PatternLayout>
</File>

此查找需要 log4j-spring-cloud-config-client 包含在 应用程序。

配置此类查找的正确方法是什么?

我尝试组装以下应用程序:

构建.gradle

plugins {
    id 'org.springframework.boot' version '2.2.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

sourceCompatibility = '13'

repositories{
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-log4j2'
}

configurations {
    all {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
        exclude group: "ch.qos.logback", module: "logback-classic"
    }
}

main

@SpringBootApplication
public class DemoApplication implements ApplicationRunner {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    private final Logger logger = LogManager.getLogger();

    @Override
    public void run(ApplicationArguments args) throws Exception {
        logger.debug("Debugging log");
        logger.info("Info log");
        logger.warn("Hey, This is a warning!");
        logger.error("Oops! We have an Error. OK");
        logger.fatal("Damn! Fatal error. Please fix me.");
    }
}

应用程序.yml

spring.application.name: Demo

log4j-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout>
                <pattern>%d %p %c{1.} [%t] $${spring:spring.application.name} %m%n</pattern>
            </PatternLayout>
        </Console>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="ConsoleAppender" />
        </Root>
    </Loggers>
</Configuration>

我希望解析器能够正确替换“Demo”作为应用程序名称,但这并没有发生。 spring-boot-starter-log4j2 是否缺少一些依赖项才能开箱即用?

Edit这是最简单的情况。 实际上,我想将应用程序名称传递给 gelf Graylog 附加程序。 我想在多个组件中共享相同的日志配置。因此,解决方法,例如定义 log4j 属性,或使用 spring 日志记录配置, 不适合。


<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-spring-cloud-config-client</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-bus</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

我的 log4j2.xml 有

<RollingFile name="rollingFile"
             fileName="${logHome}/${spring:spring.application.name}.log">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 log4j2 进行 Spring 启动。配置 log4j2 Spring-lookup 的相关文章

  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 什么是抽象类? [复制]

    这个问题在这里已经有答案了 当我了解抽象类时 我说 WT H 问题 创建一个无法实例化的类有什么意义呢 为什么有人想要这样的课程 什么情况下需要抽象类 如果你明白我的意思 最常见的是用作基类或接口 某些语言有单独的interface构建 有
  • Jframe 内有 2 个 Jdialogs 的 setModal 问题

    当我设置第一个选项时 我遇到了问题JDialog模态 第二个非模态 这是我正在尝试实现的功能 单击 测试对话框 按钮 一个JDialog有名字自定义对话框 主要的将会打开 如果单击 是 选项自定义对话框主 其他JDialog named 自
  • 在 Java 中如何找出哪个对象打开了文件?

    我需要找出答案哪个对象在我的 Java 应用程序中打开了一个文件 这是为了调试 因此欢迎使用工具或实用程序 如果发现哪个对象太具体了 这class也会很有帮助 这可能很棘手 您可以从使用分析器开始 例如VisualVM http visua
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 如何使用 JMagick 转换色彩空间?

    如何使用 JMagick API 转换色彩空间 例如 CMYK gt RGB 和 RGB gt CMYK None
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

    给定 XML
  • hibernate 6.0.2.Final 和 spring boot 2.7.0 的entityManagerFactory bean 未配置问题

    所以最近我想升级我的 Spring Boot 项目项目的一些依赖项 特别是这些组件 雅加达 EE 9 弹簧靴2 7 休眠 6 0 2 Final 完成此操作后 所有更新和代码折射 更新将 javax 导入到 jakarta 以及一些 hib
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • 为 Logstash 中的新字段设置 Elasticsearch Analyzer

    通过使用GROK filter 我们可以向Logstash添加新字段 但是 我想知道如何为该特定字段设置分析器 例如 我有一个新的 id 字段 其中有一个字段 例如a b 但是 Elasticsearch 附带的普通分析器会将其分解为a a
  • partitioningBy 必须生成一个包含 true 和 false 条目的映射吗?

    The 分区依据 https docs oracle com javase 8 docs api java util stream Collectors html partitioningBy java util function Pred
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho

随机推荐

  • 插件无法加载

    为什么我的插件无法加载 引用了 jquery 和插件链接 该插件名为 请帮我找到代码中缺少的内容
  • 如何设置Y轴高图上点的间隔

    我是第一次使用 highcharts 我试图弄清楚如何将 Y 轴点设置为静态 我使用了 min 0 和 max 140 y 轴上的点为 0 25 50 75 100 125 和 150 其中我希望它为 0 20 40 60 80 100 1
  • 显示 django 对象表

    我需要使用 Django 显示数据库中的表 最明显的方法是手动输入表标题并循环查询结果model objects all 然而 由于很懒 我想自动执行此操作 即通过内省加载模型中的所有字段以显示为列标题 并加载所有字段值以显示为行 这种方法
  • Ruby 和 Python 如何实现它们的交互式控制台?

    在为我的编程语言实现解释器时 我首先想到了一个简单的控制台窗口 它允许用户输入一些代码 然后将其作为独立程序作为 shell 执行 但存在严重的问题 如果用户输入的每一行代码都作为独立程序处理 则它必须经过分词器和解析器 然后由解释器执行
  • 在解决方案中运行所有测试时的单元测试顺序

    在一个复杂的 VS2008 解决方案中 我有三个单元测试项目 由于它们在同一个测试数据库上运行 因此测试项目相继执行非常重要 哪个项目先完成并不重要 重要的是一个项目先于另一个项目完成 如果我想全部执行它们 有几种方法可以实现 这会导致不同
  • 从C语言访问MySQL数据库

    我对 MySQL 很陌生 Linux 我想在 MySql 中创建一个数据库 并使用 C 程序将文本文件中的数据填充到数据库中 我找不到太多这方面的信息 这方面有没有明确的材料 有人可以指出我正确的方向吗 Thanks MySQL 附带一个客
  • Android Studio - AVD 管理器不可见

    我已经安装了 Android Studio 2 3 2 和 这AVD管理器 应该在工具菜单下不可见 有什么办法可以让它可用吗 Android Studio 中的工具菜单 菜单和工具栏 在最新的Android Studio gt 3 6 2
  • 从管理面板外部链接到 Magento 管理

    我正在尝试构建一些 CRM 工具 向我的销售人员发送电子邮件并链接回 Magento 管理内的页面 我一直在构建这样的 URL Mage getUrl quotes edit array id gt quote gt getQuoteId
  • 在输入占位符文本中使用 Font Awesome (5) 图标

    我遇到过很多使用 Font Awesome 这是有多少资源指向在占位符文本中添加 Font Awesome 图标
  • ReactJS:从api获取数据和地图数据

    我正在学习 ReactJS 在我的程序中 我正在进行 API 调用 然后对其进行映射 通过 API 调用获取的数据如下 数据 uid 1 标题 你好 uid 2 标题 世界 import ImporterAPI from api const
  • 在 cmake c++ 项目中使用 mongodb cxx 驱动程序

    我是 cmake 新手 我想使用 c 和最新的 mongodb cxx 驱动程序连接到 mongodb 我设法编译并安装了驱动程序 但现在我坚持在我的 cmake 项目中使用它 我使用默认设置安装了 mongodb 驱动程序 因此它位于 u
  • 如何在 tcpdf pdf 生成中使用外部 CSS

    我正在尝试使用 tcpdf 创建网页的 pdf 但这不起作用 该页面是带有外部 css 和 javascript 文件的 php 谁能帮我这个 Thanks 要包含外部 CSS 文件 您可以在添加之前执行以下操作 HTML content
  • 如何使用多个时刻插件?

    我知道如果我想使用它 我必须导入 moment 插件 像这样 import as moment from moment timezone here I can use moment tr names etc 但是如果我想使用多个插件怎么办
  • Docker PHP 容器内的“composer Recipe:update”触发“致命:不是 git 存储库”

    我正在本指南的帮助下将应用程序从 Symfony 5 4 PHP 7 4 升级到 Symfony 6 0 PHP 8 https symfonycasts com screencast symfony6 upgrade framework
  • 在 ASP.NET WebApi 中编写 CDATA

    我使用的设置 formatters XmlFormatter UseXmlSerializer true 我尝试序列化的类非常简单 public class MyClass public MyClass CDATA XmlText publ
  • 修改has_many的行为还是使用范围?

    我有一堂课看起来像这样 class User lt ActiveRecord Base has many users companies has many companies through gt users companies end 对
  • 将 ASP.NET Identity 存储移至 EF Sql 数据库

    默认情况下 ASP NET Identity 用户数据存储在 mdf 文件中 我想将数据存储在 Sql 数据库中 以便我更改了我的默认连接字符串web config到我基于 EF 的连接
  • 如何在 coreCLR 中设置 gcAllowVeryLargeObjects?

    现在既然没有一个app config 如何将 gcAllowVeryLargeObjects 设置为 true 以便可以分配大数组 您可以使用相应的环境变量 https github com dotnet coreclr blob mast
  • Tomcat 7.0.42 错误监听器启动

    我正在 tomcat jdk 7 上部署我的 war 文件 并看到以下错误 不确定是什么导致了这个问题 INFO OpenSSL successfully initialized OpenSSL 1 0 1d 5 Feb 2013 Feb
  • 使用 log4j2 进行 Spring 启动。配置 log4j2 Spring-lookup

    根据 log4j2 文档 Spring Boot Lookup 从以下位置检索 Spring 属性的值 弹簧配置 此查找将返回空值 直到 Spring Boot 初始化应用程序日志记录