如何配置 log4j2 Web 应用程序

2024-01-07

我对 Web 应用程序不太陌生,最近我需要使用日志记录机制,为此我选择了 Log4J2,我浏览了那里的指南,并下载了所需的库。到目前为止我就是这么做的。

1. Added following jars to web-inf/lib
   --  log4j-core2.1.jar
   --  log4j-api-2.1.jar
   --  log4j-web-2.1.jar


2. Added below xml as, log4j2.xml in java/src directory

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="NONPROD" status="OFF">


    <Properties>

        <Property name="log-path">logs</Property>
    </Properties>


    <Appenders>

        <Console name="console-log" target="SYSTEM_OUT">
            <!-- <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n -->
            <!-- </pattern> -->

            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>


        <RollingFile name="info-log" fileName="${log-path}/web-info.log"
            filePattern="${log-path}/web-info-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />

                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20 MB" />
            </Policies>
        </RollingFile>

        <RollingFile name="error-log" fileName="${log-path}/web-error.log"
            filePattern="${log-path}/web-error-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />

                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20 MB" />
            </Policies>
        </RollingFile>


        <RollingFile name="debug-log" fileName="${log-path}/web-debug.log"
            filePattern="${log-path}/web-debug-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />

                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20 MB" />
            </Policies>
        </RollingFile>



        <RollingFile name="trace-log" fileName="${log-path}/web-trace.log"
            filePattern="${log-path}/web-trace-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />

                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20 MB" />
            </Policies>
        </RollingFile>

    </Appenders>

    <Loggers>

        <Logger name="com.demo.web.log4j2.file" level="debug"
            additivity="false">

            <appender-ref ref="trace-log" level="trace" />

            <appender-ref ref="error-log" level="error" />

            <appender-ref ref="debug-log" level="debug" />

            <appender-ref ref="info-log" level="info" />
        </Logger>

        <Logger name="com.demo.web.log4j2.console" level="all"
            additivity="false">
            <AppenderRef ref="console-log" />
        </Logger>


        <Root level="info" additivity="true">

            <AppenderRef ref="console-log" />

        </Root>

    </Loggers>


</configuration>

3. third and last i wrote an small web service to test logging

@Path("/register")
public class Register {

    private DataManager mManager;
     private static final Logger LOG = LogManager.getLogger(Register.class);

    public Register(){
        mManager = DataManager.getInstance();
    }


    @GET
    @Path("/{param}")
    public Response getMsg(@PathParam("param") String msg) {

        LOG.error("Not supported operations");
        return Response.status(Response.Status.BAD_REQUEST)
                .entity("Not supported").build();

    }

但在控制台中,在触发获取请求时,这就是我打印的全部内容。

INFO: Server startup in 35959 ms
Not supported operations // this is not in pattern i supplied in log4j2.xml

// this is my pattern
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />

我发现这可能是由于出现了一些问题,并且正在努力寻找实际原因,对于网络编程来说是全新的,请帮助我配置我的记录器。

谢谢, 技术拳头


您的 servlet 容器正在使用其他一些日志框架来记录到控制台。找出哪个日志框架,并使用 log4j2 的桥接库之一将输出重定向到您的 log4j2 设置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何配置 log4j2 Web 应用程序 的相关文章

  • 如何在由子控件组成的 SWT 复合材料上跟踪鼠标?

    我创建了自己的控件 我想跟踪鼠标并添加一个MouseTrackListener 很遗憾MouseEnter and MouseLeave当鼠标移动到我的合成部分 即标签和按钮 上时 也会生成事件 Mouse enter mouse ente
  • 如何在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 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件
  • 如何调试“com.android.okhttp”

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • WebService ASP.NET MVC 3 发送和接收

    这几天我一直在绞尽脑汁思考如何满足新的要求 我有两个网站 第一个让用户填写申请表 第二个网站是用于管理用户应用程序的内部网站 我需要开发一个 Web 服务 将应用程序数据从网站 1 发送到网站 2 并向网站 2 返回成功或失败的响应 我以前
  • 如何在 Spring 中使 @PropertyResource 优先于任何其他 application.properties ?

    我正在尝试在类路径之外添加外部配置属性资源 它应该覆盖任何现有的属性 但以下方法不起作用 SpringBootApplication PropertySource d app properties public class MyClass
  • MS Access 执行 POST Web 请求

    在我的 MS Access 应用程序中 我需要定期向我的网络服务器发送一批信息 我不需要任何花哨的东西 比如 SOAP XML RPC 或任何东西 只需一个简单的 POST 页面请求就足够了 我用谷歌搜索了一下 但找不到任何真正有用的东西
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • Android S8+ 警告消息“不支持当前的显示尺寸设置,可能会出现意外行为”

    我在 Samsung S8 Android 7 中收到此警告消息 APP NAME 不支持当前的显示尺寸设置 可能会 行为出乎意料 它意味着什么以及如何删除它 谢谢 通过添加解决supports screens 机器人 xlargeScre
  • java XMLSerializer 避免复杂的空元素

    我有这个代码 DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuil
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO

随机推荐

  • 使用 jQuery 1.5 以 jsonp 形式发送请求,将响应解释为文本

    简短的问题 有没有办法向服务器发出 jsonp 请求 捕获请求 但不将其解析为 javascript 我在 jQuery 1 5 中使用 dataType jsonp text 但它不起作用 我正在尝试使用 jsonp 通过 AJAX 访问
  • 根据登录用户在运行时更改数据库架构

    我已经阅读了许多有关动态数据源路由的问题和答案 并使用以下方法实现了一个解决方案AbstractRoutingDataSource和另一个 见下文 这很好 但需要所有数据源的硬编码属性 随着使用该应用程序的用户数量的增加 这不再是合适的路由
  • 如何使用 VS2015 Preview 运行 xUnit 单元测试?

    我通过扩展管理器添加了 xUnit net runner for Visual Studio v0 99 8 但是当我打开 测试资源管理器 窗口时 它似乎没有拾取任何单元测试 此外 Resharper 9 EAP 是唯一支持 VS2015
  • R中将线性方程转换为矩阵形式的函数?

    我想知道 R 是否存在任何包或其他预构建的解决方案 能够将线性方程组转换为矩阵形式 例如 通过高斯赛德尔算法 https en wikipedia org wiki Gauss E2 80 93Seidel method 类似于equati
  • 如何将@mixin从一个sass文件包含到不同文件夹中的另一个sass文件

    我将一个 SASS 文件中的 mixin 包含到另一个文件中 但 ionic 出现错误serve命令 Error Sass Error Invalid CSS after include expected identifier was th
  • 找到给定图像的 Dockerfile

    我正在一台 Linux 机器上工作 我大约 3 4 周前构建了一个 Docker 镜像 但我不记得 Dockerfile 位于哪里 查找 Dockerfile 的最佳方式是什么 是否有可能以某种方式在给定图像的情况下获取其位置 我尝试使用
  • 他们为什么使用; Java/C++ 中的结束语句

    他们应该不会用过吧 结束声明 他们可以使用 gt 来调用方法 这只是一个疏忽吗 还是这里面有更深层次的原因 Java 选择分号是为了拥有与 C 和 C 类似的语法 C 选择它的语法与 C 类似 我猜 C 选择分号是因为 B ALGOL 和
  • Ruby 语法:突破 'each.. do..' 块

    我正在开发一个红宝石 on Rails应用程序 我的问题更多是关于Ruby句法 我有一个带有类方法的模型类self check class Cars lt ActiveRecord Base def self check name self
  • 在 Rails 中发表评论时显示用户名

    我有一个名为 Pins 的应用程序 用于用户发布专辑评论 我创建了一个评论模型 供其他用户对评论发表评论 我很难让评论说 发布者 然后显示发布它们的用户的姓名 这是一些代码 引脚型号has many comments用户模型has many
  • django - 获取多个时期的最大值

    我刚开始使用 django 我的模型非常简单 由时间戳和值 温度 每分钟更新 组成 我想检索过去 7 天中每一天的最大值 我需要查询7次还是有 捷径 您可以利用annotate https docs djangoproject com en
  • 如何从字符串中删除单词列表

    我想做的 在 Clojure 中 例如 我有一个需要删除的单词向量 def forbidden words the many more 和一个字符串向量 def strings the movie list this is a string
  • DataGridView 开头没有选定的行

    在我的 WinForms 中我有DataGridView 我想一次选择整行所以我设置SelectionMode as FullRowSelect 现在我遇到了问题 因为一开始我的表单在第一行下划线 所选行集为空 第一行未选择但只是下划线 我
  • PHP:数组中连续元素的数量[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在研究一个问题 找出数组中最大的一组连续数字 假设我们有一个数组 5 43 4 56 3 2 44 57 58 1 该数组中最大
  • 扩展 Ascii 在控制台中不起作用!

    例如 System out println 显示为 同样适用于 System out println u255a 为什么这不起作用 标准输出确实支持这些字符 所以我不明白 See 这个问题 https stackoverflow com q
  • django admin内联多对多自定义字段

    您好 我正在尝试在 django admin 中自定义我的内联 这是我的模型 class Row models Model name models CharField max length 255 class Table models Mo
  • 没有 staticfiles 应用程序的 Django 1.4 管理静态文件

    Django 1 4 发行说明 https docs djangoproject com en dev releases 1 4 state 如果您隐式依赖管理静态文件的路径 在 Django 源代码中 您需要更新该路径 这 文件从 dja
  • 带参数的 get_absolute_url

    My urls py urlpatterns url r profile profile profile name profile My model class Reg models Model name models CharField
  • Django 管理模型ArrayField 更改分隔符

    我的模型看起来像这样 from django contrib postgres fields import ArrayField class Trigger models Model solutions ArrayField models
  • 使用 OpenCVsolvePnP 在 OpenGL 中实现增强现实

    我正在尝试使用 Android 构建增强现实应用程序BoofCV http boofcv org index php title Main Page Java 的 OpenCV 替代品 和 OpenGL ES 2 0 我有一个标记 我可以使
  • 如何配置 log4j2 Web 应用程序

    我对 Web 应用程序不太陌生 最近我需要使用日志记录机制 为此我选择了 Log4J2 我浏览了那里的指南 并下载了所需的库 到目前为止我就是这么做的 1 Added following jars to web inf lib log4j