使用 Log4j 的每个用户都有不同的日志

2023-12-02

我有一个 Web 应用程序,我想为每个用户使用不同的日志,这样我就可以获得用户在系统上执行的操作的“历史记录”。

这是我到目前为止所拥有的:

import java.io.File;
import java.io.IOException;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.Logger;

public class LogManager {

    public Logger getLog(String username) throws IOException{
        SimpleLayout layout = new SimpleLayout(); 
        FileAppender appender = new DailyRollingFileAppender(layout, "users"+File.pathSeparator+username+File.pathSeparator+username, "'.'yyyy-MM");

        // configure the appender here, with file location, etc
        appender.activateOptions();
        Logger logger = Logger.getRootLogger();
        logger.addAppender(appender);
        return logger;
    }

}

问题是,作为一个网络应用程序,是多线程的,所以据我所知我不能使用RootLogger一直并根据我正在记录的用户更改附加程序。我想我应该创造不同的Logger对于每个用户,但这是正确的吗?


尝试切换到logback(log4j 的后继者)。它带有一个筛选Appender它可用于根据给定的运行时属性(在您的情况下为“userid”)来分离(或筛选)日志记录。这文档包含基于用户 ID 分离日志的示例。

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

使用 Log4j 的每个用户都有不同的日志 的相关文章

  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 如何在ArrayList中的特定位置插入对象

    假设我有一个大小为 n 的对象的 ArrayList 现在我想在特定位置插入另一个对象 假设在索引位置 k 大于 0 且小于 n 并且我希望索引位置 k 处及其之后的其他对象向前移动一个索引位置 那么有没有什么方法可以直接在Java中做到这
  • Java,顺序流在哪个线程中执行?

    在阅读有关流的文档时 我遇到了以下句子 attempting to access mutable state from behavioral parameters presents you with a bad choice if you
  • 类型已知,但方法指的是缺失类型

    我对 java 和 Eclipse 不太有经验 但遇到以下问题 我正在写类似的东西 Point3D myPoint myClass myMethod arg 我收到错误 方法 myMethod myType arg 引用缺失的类型 Poin
  • 如何准确判断 double 是否为整数? [复制]

    这个问题在这里已经有答案了 具体来说 在 Java 中 我如何确定double是一个整数 为了澄清 我想知道如何确定 double 实际上不包含任何分数或小数 我主要关心的是浮点数的性质 我想到的方法 以及我通过谷歌找到的方法 基本上遵循以
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • 未注入带有 JPA2 的 Apache Ignite 2.7 IgniteRepository

    使用在 Web 上建立的 guildes 我使用 Spring Data JPA 2 应用程序制作了简单的 Spring Boot 2 仅在 2 7 版本中才向 Apache Ignite 添加了 Spring Boot JPA 2 支持
  • 如何避免Eclipse在将类名放在注释中时导入类,以便checkstyle稍后不会抱怨?

    有时我将类名放在方法或类的注释中只是为了引用 但是 Eclipse 会自动执行导入并在文件中留下导入语句 这会导致稍后出现 未使用的导入 检查样式错误 当我在注释中输入类名时 是否可以更改一些配置以避免 Eclipse 自动导入 人们不同意
  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • ActiveMQ JNDI 查找问题

    尝试使用 JNDI 运行以下 ActiveMQ http activemq apache org jndi support html http ActiveMQ 20JNDI 并且我的 jboss server node lib 文件夹中有
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • 使用 Guava Ordering 对对象列表进行多条件排序

    我有一个类无法实现可比较 但需要根据 2 个字段进行排序 我怎样才能用番石榴实现这一目标 假设班级是 class X String stringValue java util Date dateValue 我有一个清单 List
  • 使用 Java 8 Spring 4 + MyBatis 集成问题

    使用 Java 8 1 8 0 60 Spring 4 2 1 和 MyBatis 3 3 0 时遇到以下异常 Sep 29 2015 11 02 58 AM org springframework context annotation A
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma

随机推荐

  • System.Guid.NewGuid() 的随机性如何? (拿两个)

    在开始将其标记为之前重复的 读给我听 另一个问题有一个 很可能 不正确的接受答案 我不知道 NET 如何生成它的 GUID 可能只有 Microsoft 这样做 但它很可能只是调用CoCreateGuid 然而 该函数被记录为正在调用Uui
  • 如何在 JavaScript 中对数字进行四舍五入?

    在从事一个项目时 我遇到了一个由前雇员创建的 JS 脚本 它基本上以以下形式创建了一个报告 Name Value Name2 Value2 etc 问题是这些值有时可以是浮点数 具有不同的精度 整数 甚至可以是以下形式2 20011E 17
  • 在不同组件中以不同方式覆盖 Angular Material CSS

    我有两个带有选项卡组的组件 一个是主页 我使用 ViewEncapsulation None 覆盖了 css 以使标签更大 另一个是一个对话框 我想保持它很小 但仍然对其应用一些其他自定义样式 当我在访问其他选项卡页面后打开对话框时 它会复
  • 在 Windows Phone 8.1 运行时(不是 silverlight)xaml c# 应用程序上调用外部应用程序

    我正在尝试启动一个外部应用程序 从我的应用程序发送一个参数 任何人都知道一种方法可以做到这一点 Thanks 您只有两种方法来启动外部应用程序 启动注册的文件类型 启动已注册的 URI 方案 您可以在 MSDN 上找到更多详细信息 使用 W
  • 如何使用 javascript 将下表转换为 JSON?

    如何在 jquery javascript 中将下表变成 JSON 字符串 table thead tr th Column 1 th th Column 2 th th Column 3 th tr thead tbody tr td A
  • 如何获取当前用户的“Application Data”文件夹的路径?

    1 如何找到用户正在使用的Windows安装驱动器 我需要这个来导航到应用数据在文档和设置中 2 另外我怎样才能得到用户名也这样我就可以转到ApplicaitionData 例如 D Documents and Settings user
  • Windows 批处理:回显而不换行

    Linux shell 命令的 Windows 批处理等效项是什么echo n它会抑制输出末尾的换行符 这个想法是在循环内的同一行上写入 Using set和 p您可以在不换行的情况下回显参数 C gt echo Hello World H
  • 获取存储在变量中的字符串的值,该变量的名称作为字符串存储在另一个变量中

    lt assign blah foo gt lt assign foo awesome gt 我们可以在不引用 foo 的情况下渲染 awesome 吗 我尝试过类似的东西 blah 但它不起作用 有什么想法吗 有一个eval内置函数 它将
  • rCharts nvd3 库强制刻度

    我想强制所有刻度线和刻度标签沿着轴出现rChartsn 绘图从nvd3图书馆 我尝试了几种方法但没有成功 这是默认行为 df lt data frame x 1 13 y rnorm 13 library rCharts n lt nPlo
  • 开发人员之间使用不同版本的 git

    如果我安装了 GIT 1 9 4 版本并且服务器上的存储库使用的是 1 8 2 会有问题吗 使用不同版本的 GIT 工作是否存在任何问题 团队中的每个人都应该拥有相同的版本还是无关紧要 可以在文档中找到任何相关信息 我将不胜感激您的帮助 1
  • 从多个表中选择语句,具有可变输入

    我有两张桌子 AreaCode and EquipmentNumber AreaCd AreaID INT NOT NULL AUTO INCREMENT Code INT Name CHAR 30 Comments TEXT PKEY A
  • 密钥在 pm3d gnuplot 中变得不可见

    我正在使用以下代码使用 pm3d 地图在 gnuplot 中绘制图形 set pm3d map set pm3d corners2color c1 spl patternD0pt02 dat title a 但是当生成图时 本来应该出现在右
  • 使用注释的 Spring Integration Executor Channel 代码示例

    附上我的系统图 系统图 流程如何运作 spring 集成流程从 C 上的 json 文件读取输入并执行 2 个操作 存入数据库 通知 打印给用户 重要标准 我希望存储到数据库流中独立于业务逻辑 打印到 通知用户 即数据库exception
  • 应用程序被终止后 Android 服务停止

    我想创建一个service即使应用程序从任务管理器关闭 它也会运行 我创建了一个服务 然后记录一条消息以检查它是否正在运行 我注意到它仅在应用程序正在运行或在前台运行时才有效 服务等级 public class CallService ex
  • 具有多选下拉菜单的数据表特定列过滤器

    我在 Datatable API 中看到了这种可能性 可以使用 Drop down 进行特定列过滤 Ref https datatables net examples api multi filter select html 但对我来说 它
  • Android 上的浮动应用程序(窗口应用程序)

    有谁知道如何创建浮动窗口 下图显示了我的意思 源代码 我在各种网站上读到 为了做到这一点 应用程序必须作为服务运行 而该服务又应该使用 TYPE SYSTEM ALERT 作为活动运行 如果上述是或不是真的 我仍然不知道如何实现代码 有人可
  • 使用 python 缓慢上传到 azure blob 存储

    Api 接收文件 然后尝试创建唯一的 blob 名称 然后我将 4MB 的块上传到 blob 每个块大约需要 8 秒 这正常吗 我的上传速度是110Mbps 我尝试上传一个 50MB 的文件 花了将近 2 分钟 我不知道azure blob
  • 如何使用ajax保存到数据库

    我有一个工作正常的代码 但数据无法保存到数据库 我想通过 Ajax 将 cost currency rate profit rate 和 pprice 插入数据库 这是javascript和update php的代码 我尝试修改代码以保存在
  • 如何使用批处理文件分割字符串?

    如何使用批处理脚本分割字符串 设置java path C Program Files Java jdk1 6 0 31 上面是我的字符串 我只想要 java path 中的 C Program Files 如何得到它 您可以按字符位置拆分字
  • 使用 Log4j 的每个用户都有不同的日志

    我有一个 Web 应用程序 我想为每个用户使用不同的日志 这样我就可以获得用户在系统上执行的操作的 历史记录 这是我到目前为止所拥有的 import java io File import java io IOException impor