用户主目录中的 log4j 日志文件

2024-04-16

我正在开发一个可以在 OSX 和 Windows 上运行的应用程序。我希望将日志写入用户主目录。对于 OSX,它将位于 /Users//Library/Application Support/MyApp/log 目录下,而在 Windows 下,具体取决于 /Users//AppData/MyApp/log 目录下的版本。

我能做到这一点的最好方法是什么?我已经四处寻找解决方案,但没有找到任何有用的解决方案或我喜欢使用的解决方案。

期待您的意见。

编辑: 由于日志文件的位置取决于操作系统,我希望找到一个运行时解决方案,可能如下所示

if (System.getProperty("os.name").contains("mac"))
    logFileLocation = System.getProperty("user.home") + "/Library/Application Support/MyApp/logs"
else
    logFileLocation = System.getenv("APPDATA") + "/MyApp/logs"

Thanks


改变ConsoleAppender to a FileAppender。据我所知,写入请求将被重定向到 Windows 操作系统上的 appdata。不确定 MacO 是否如此。

URL mySource = MyAppMainClass.class.getProtectionDomain().getCodeSource().getLocation();
File rootFolder = new File(mySource.getPath());
System.setProperty("app.root", rootFolder.getAbsolutePath());

并像这样编辑 log4j 配置

log4j.appender.NotConsole=org.apache.log4j.RollingFileAppender
log4j.appender.NotConsole.fileName=${app.root}/fileName.log

或对于用户主页:

// log4j 1.*
log4j.appender.NotConsole.fileName=${user.home}/fileName.log
// log4j 2.*
log4j.appender.NotConsole.fileName=${sys:user.home}/fileName.log

请注意,log4j 2 需要sys:前缀 - 感谢@sgrubsmyon

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

用户主目录中的 log4j 日志文件 的相关文章

随机推荐

  • WebRTC 和 Asp.Net Core

    我想将音频流从我的 Angular Web 应用程序录制到我的 Asp net Core Api 我认为 使用 SignalR 及其 websockets 是实现这一目标的好方法 通过这个打字稿代码 我可以获得一个 MediaStream
  • 如何从 AngularJS 模板中的嵌套 JSON 数组获取值?

    我下面有一些 JSON 数据 tracks album released 2013 href spotify album 3qGeRY1wt4rrLIt1YuSwHR name The Marshall Mathers LP2 Deluxe
  • 增强多边形序列化

    我在我的项目中使用增强几何体 并且需要序列化多边形 我一直在使用 boost 序列化 对于许多 boost 数据类型都没有问题 但 boost 几何似乎当前不支持序列化 因为我在序列化文件夹中找不到任何标头 有没有众所周知的方法来实现这一目
  • log4go的异常行为

    我找到了log4go http code google com p log4go w list包有时会丢失日志 以下是一个简单的代码片段 我移动了log4go目录 因此以下导入就可以了 package main import log4go
  • 如何在 QGraphicsView 中启用 QOpenGLWidget 的抗锯齿功能?

    我已通过 QGraphicsProxyWidget 将 QOpenGLWidget 添加到 QGraphicsView 不使用 setviewport QSurfaceFormat format QSurfaceFormat format
  • 如何在不使用 C++ 中的字符串函数的情况下检查字符串是否为回文

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的任务是创建一个程序来检查输入的字符串是否是回文 所以我在这里有这个简单的程序 include
  • 如何从 LDAP 目录中提取 TNSNames

    我一直在尝试查询 LDAP 目录服务器以检索 tnsnames 条目 我可以使用以下代码 但味道不对 是因为它是错误的 还是因为查询 ldap 涉及几个间接级别 let identifier LdapDirectoryIdentifier
  • Bitbucket:从提示绑定文件以供下载

    我在一个私人存储库中工作 并与我的朋友合作 他对 SCM 之类的东西不太友好 他所需要的只是监控我开发的最新版本 这是 1 个可执行文件 我想知道 而不是每次他想要获取最新更改时克隆整个存储库 有时我的更改集可能由几个仅在开发时使用而不是测
  • OpenGL ES 像素艺术 - 缩放

    我在 iPhone 上的 OpenGL Es 1 1 上显示基于像素的艺术 想想复古瓷砖和艺术 时遇到问题 图块使用 8 个字节 每行 1 个字节 表示 每一位代表一个像素是否被设置 例如数字为 8 的图块 0 0 0 0 0 0 0 0
  • 企业内部应用程序分发

    我正在为一家公司开发 iPad 应用程序 由于保密原因 他们不想将应用程序发布到应用程序商店 他们满足企业计划要求 但尚未参与 该公司想知道分销流程是怎样的 我已经深入苹果文档丛林 我对配置文件有点困惑 由于保密原因 我想使用带有配置文件的
  • 创建规则来限制sql server表中的特殊字符

    我想创建一条规则来限制在列中输入特殊字符 我已经尝试过以下方法 但这没有用 CREATE RULE rule spchar AS make LIKE lt gt 我不知道我在这里做错了什么 任何帮助 将不胜感激 您可以创建一个Check C
  • Python、Brew 和 MySQLdb

    我一直在通过brew安装运行python 我用安装工具安装了 mysql python Egg 根据 mysql python 说明进行标准安装 并将其安装到 usr local lib python2 7 site packages 处理
  • USB接口条码扫描器

    不完全是一个编程问题 但很接近 无论如何我都会试试运气 The 键盘楔子 扫码机插入 读者之间的翻译装置 和键盘 数据发送通过 楔形看起来就像是被输入的 电脑 而键盘 本身仍保持完整功能 因为电脑使用键盘 楔子无法区分 在输入的数据之间 扫
  • 为什么reinterpret_cast不是constexpr?

    考虑以下片段 static constexpr uint8 t a 0 static constexpr const int8 t b reinterpret cast
  • 由 pandoc 从 .md 转换而来的 Beamer 幻灯片中的绘图非常大

    R 生成的正态图chunksR 中的 Markdown 文件在转换为 html 幻灯片或 pdf 时完全相同 但是 当它们通过以下方式转换为投影仪幻灯片时pandoc t beamer ex md V theme Warsaw o beam
  • SVG路径定位

    我正在制作脸部 SVG 无法将眉毛固定在正确的位置 请指教
  • Ado.Net 实体:对象不显示链接成员(外键)

    我有一个简单的数据库方案 用户 帐户 用户与帐户具有一对多关系 我已经生成了 ado net 实体数据模型 我可以创建用户和帐户 甚至可以将它们链接在一起 在数据库中 account user id 已正确填写 因此理论上我应该能够通过实体
  • 具有 DNS 验证的证书陷入待验证状态

    我已将我的域转移到 Route53 并且我希望 Amazon Certificate Manager 为该域颁发证书 我按照控制台中的步骤颁发证书 确实出现了 在 Route53 中创建记录 按钮 我确实按它 它说 成功 我确实看到在 Ro
  • 如何在numpy中设置最大输出宽度?

    我正在使用 Jupyter 笔记本 我有一个相当宽的屏幕 但是显示的输出 例如 当我打印numpyarray 的格式就像屏幕很窄一样 我找到了一种增加单元格宽度的方法 from IPython core display import HTM
  • 用户主目录中的 log4j 日志文件

    我正在开发一个可以在 OSX 和 Windows 上运行的应用程序 我希望将日志写入用户主目录 对于 OSX 它将位于 Users Library Application Support MyApp log 目录下 而在 Windows 下