关闭 log4j Logger 以释放文件描述符

2024-02-15

我编写了一个服务器来接收 RMI 请求并执行一些操作。

对于每个请求,都会创建一个 Log4J Logger 实例。以下是用于创建 Logger 实例的代码片段。

Logger log = Logger.getLogger("log_" + requestID);
log.setAdditivity(false);
FileAppender appender = null;
try {
    PatternLayout layout = new PatternLayout("%-5p %C{1} %d{yyyy-MM-dd HH:mm:ss} : %m%n");
    appender = new FileAppender(layout, logFileName, false);
} catch(Exception e) {
    logger.error("Error initializing logger", e);
}

log.addAppender(appender);
log.setLevel(level);

这里一切正常。问题是在收到大量请求后超时,该服务器进程的打开文件数量增加并且没有下降,从而导致进程崩溃并出现异常:打开的文件太多.

进一步检查发现问题是由于请求完成后文件描述符没有释放。我尝试查看 Log4J 文档,但找不到有关如何仅关闭一个记录器而不影响可能在不同线程中运行的其他记录器的任何内容。

这里有什么想法吗?


看看FileAppender.close() 文档 http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/WriterAppender.html#close%28%29,也许它会解决你的问题。

但我认为你应该重新考虑你的设计,并且只有一个 Logger 实例,不是吗?

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

关闭 log4j Logger 以释放文件描述符 的相关文章

  • FluentD 日志不可读。已排除,下次检查

    面临 fluidd 日志无法读取 已排除 下次检查 我有一个在 kubernetes 设置中运行的 fluidD 守护进程集的简单配置 流利版本 fluidd 0 12 43 以下是我的配置
  • 使用 GWT CellTableBuilder 构建树表

    Is it possible to build a tree table like this http www sencha com examples ExamplePlace basictreegrid with the new Cell
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • 如何在 JavaScript 中将所有对象属性设置为 null?

    我正在使用 Vue 突然使用一些计算的 cssvuetify https vuetifyjs com不管用 我声明对象的方式是 personal info 在我的模板中 我可以这样做personal info name以及每个文本输入 v
  • 在外部网络上托管 Expo 应用程序?

    我正在编写一个应用程序create react native app CRNA 为一家公司 最终 它可能会投入生产 但出于研究原因 我需要一个可以轻松部署到同事手机 Android 和 iOS 的工作原型 由于知识产权的原因 我不得在任何外
  • C#图表控件删除条形图中条形之间的空格

    I have a bar chart made with the c net chart control that looks like the following 正如您所看到的 图表上每对红色和蓝色条之间都有一个空格 有没有办法删除这些
  • Pandas 时间戳以 30 秒为单位不一致

    我试图将 pandas DatetimeIndex 或 Timestamp 舍入到最接近的分钟 但我遇到了 30 秒时间戳的问题 有些向上舍入 有些向下舍入 这似乎是交替的 有什么建议可以解决这个问题 以便 30 总是四舍五入吗 gt gt
  • 比较两个 Doctrine_Record 对象

    我如何比较两个Doctrine Record对象看看它们是否 相等 在我正在考虑的域登录中 如果两个对象具有相同的属性值 则它们相等 除了id和created at and updated at字段 a laTimestampable 我想
  • Django 迁移卡住了

    我有一个新字段要添加到我的数据库中 所以我说 python manage py makemigrations 这正确地创建了kernel migrations 0003 auto 20150726 1911 py 我检查了内容 一切看起来都
  • PostgreSQL 9.3:函数不唯一错误

    我创建了以下具有 11 个参数的函数 如下所示 函数调用 SELECT FROM function TableDetails NULL Type Table 2671ffdb 28a4 4ce4 a226 e5a21d66509e D096
  • 在android中录制原始视频格式

    我对安卓完全陌生 是否可以在 android 中从相机录制原始视频格式 基本上我有一个与 ICS 一起运行的 pandaboard 我连接了 USB 摄像头 iball 现在我想从 USB 摄像头录制原始视频格式 该相机支持原始视频格式我已
  • 是否有必要保护 JAX-RS 请求免受 CSRF 影响?

    是否有必要保护 JAX RS 请求免受攻击CSRF https en wikipedia org wiki Cross site request forgery By 定义 https en wikipedia org wiki Repre
  • Azure Function+ARM:将应用程序设置与当前设置合并

    我的部署分为两个管道 部署基础设施 运行ARM模板 部署和配置应用程序 上传应用程序 运行脚本 我的 ARM 模板包含一个 AppSettings 数组 如下所示 schema https schema management azure c
  • 如何使 CSS 网格容器保持响应式方形大小?

    I want grid container to maintain square shape So when screen is resized it will get bigger or smaller but it s height w
  • MySQL 每组前 2 条记录

    基本上 考虑到最后的创建日期时间 我只需要获取每个用户的最后 2 条记录 id user id created datetime 1 34 2015 09 10 2 34 2015 10 11 3 34 2015 05 23 4 34 20
  • Capistrano 和 Bash:忽略命令退出状态

    我正在使用 Capistrano 运行远程任务 我的任务如下所示 task my task do run my command end 我的问题是如果my command退出状态 0 则 Capistrano 认为它失败并退出 当退出状态不
  • 更灵活的引文格式

    我喜欢在我的 r bookdown 项目中使用引用 格式不是很灵活 我可以使用 citeID来获取 作者 年份 或 citeID 来获取 作者年份 有时我只需要 年份 或 年份 或者我可能只需要 作者年份 根本不需要括号 最后 我需要添加对
  • 在 JBOSSstandalone.sh 文件中设置 JAVA_OPTS

    我在 jboss 上有一个通过 log4j 进行日志记录的应用程序 当我通过bat文件 standalone bat 运行我的服务器时 日志工作正常 但standalone sh文件下有问题 以下是我在standalone bat中设置JA
  • PHP $_SESSION 变量不会取消设置

    抱歉 我问了一个重复的问题 我在这个论坛上看到过其中一些 但没有一个回复对我有用 我正在使用 php 会话构建基本登录 这是我的新手 login php 验证 html 登录表单并开始会话 设置变量 SESSION login and SE
  • IDX10501:签名验证失败。无法匹配键

    请帮助我了解 ASP netcore 应用程序和 netcore Kestrel 托管应用程序的 JWT 令牌验证之间的区别 有两个应用程序使用源代码验证令牌 如下所示 public static IServiceCollection Ad
  • 选择哪个工作流引擎? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 创建带有随机字符的“转置”文件

    我想创建一个程序 创建带有随机字符的 txt 文件 但可以创建转置的 文件 接下来 我按照我的意愿添加两个 txt 文件的示例 FILE1 A B C D E F G H I J K L M N O P Q R S T U V W Z 1
  • 关闭 log4j Logger 以释放文件描述符

    我编写了一个服务器来接收 RMI 请求并执行一些操作 对于每个请求 都会创建一个 Log4J Logger 实例 以下是用于创建 Logger 实例的代码片段 Logger log Logger getLogger log requestI