如何跟踪 Node.js 中的(更改的)日志文件

2024-01-05

好吧,这似乎是一个简单的问题,但我无法从这里找到答案,因此我将其发布,希望有人可能遇到类似的问题。

我需要监视指向 Web 服务器文件的符号链接(/var/log/lighttpd/error.log更具体地说,感谢莱纳斯·G·蒂尔 https://stackoverflow.com/users/295262/linus-g-thiel 我想出了如何跟踪符号链接 https://stackoverflow.com/questions/9364514/how-to-watch-symlinked-files-in-node-js-using-watchfile)。我知道我可以设置fs.fileWatch来监控它,但我还应该指出error.log文件也会在特定时间轮换,具体取决于日志守护进程的设置。当这种情况发生时,fs.fileWatch停止工作。我也知道我可以生成一个子进程并运行

tail -F ./symlink_to_error.log

从节点来解决日志轮换引起的问题,但我更喜欢使用本机节点功能。任何人都可以阐明这一点吗?

[ EDIT ]

实际上,即使日志文件被轮换,监控实际日志文件也不会出现任何问题。该问题实际上是由符号链接引起的。我监视符号链接的原因是因为当大小达到一定限制时,实际日志文件名会发生更改。/var/log/lighttpd/error.log仅作为示例给出。我无法控制日志文件的重命名方式,但我有一个 crontab,它每分钟更新一次符号链接。

[ 编辑 2012 年 2 月 28 日 ]

实际上我正在使用以下方法(通过spawn)

tail -F ./symlink_to_error.log

在我正在开发的一个日志监控项目中,它的工作相当可靠,尽管它不如 watchFile() 高效。


除了观察符号链接和/或其目标文件之外,还观察包含目标日志文件的目录并在“更改”事件上检查日志文件是否已滚动到不同的名称。如果它已在新日志文件上设置一个新文件观察器。

fs.watchFile(logDir, function(curr, prev) {
  if (curr.nlink != prev.nlink) {
    // The number of links in the directory has changed, now
    // see if there is a new log file and start watching it.
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跟踪 Node.js 中的(更改的)日志文件 的相关文章

随机推荐

  • Android 用渐变放大中心颜色

    I can not enlarge the width of a centeral color with a gradient The goal is Larger center with some color and transparen
  • 在Qt中合并工具栏和标题栏

    如何在顶部栏中实现工具栏 例如 Tiled做到了吗 Normally the toolbar looks like the follows 示例代码当前情况如何 class MainWindow public QMainWindow Q O
  • java.io.StreamCorruptedException:无效的流标头

    我正在编写一个套接字客户端 其中我将数据发送到服务器 使用 getOutputStream 下面是我的代码 this wr this socket getOutputStream wr write hexStringToByteArray
  • 在连续的值运行中创建计数器

    我希望在每次运行的相等值中创建一个连续的数字 就像出现的计数器一样 一旦当前行中的值与前一行不同 它就会重新启动 请在下面找到输入和预期输出的示例 dataset lt data frame input c a b b a a c a a
  • 获取 Response.output 大小? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的代码现在是这样的 var xmlSerializer new XmlSerializer typeof DataSet xmlSe
  • 列表的 Add 和 Append 方法之间的区别?

    之间有区别吗 Append 和 Add C 中的列表方法 我尝试在谷歌和网站上搜索 但令我惊讶的是没有人问这个问题 我询问的原因是想知道这两种方法中的一种是否对性能要求较低 我一直交替使用这两种方法 并且我没有看到它们的功能有任何差异 因为
  • 如何在 Oracle PL/SQL 过程的开始部分之后声明游标

    我是 Oracle PL SQL 新手 我尝试编写一个过程 首先从表中的列获取数据并分配给变量 然后 对于结果中的每一行 值 我执行另一个查询并循环该新查询的结果 并执行各种插入和更新 之后我将返回到外循环并继续序列 我的尝试如下 CREA
  • Javascript - 将数字前导零转换为其他数字。不明白为什么会发生这种情况?

    某个数字的前导零将数字转换为某种未知的数字格式 例如 017正在转换为15 037正在转换为31 还发现末尾有 8 0r 9 的数字保持不变 例如 018 is 18 038 is 38 o59 is 59 我发现的另一件事是 对于接下来的
  • Flink 上运行 Beam pipeline 时出现与内存段相关的 EOFException

    我正在尝试在我们的测试集群上的 Flink 上运行 Apache Beam 管道 它一直失败EOFException at org apache flink runtime io disk SimpleCollectingOutputVie
  • CosmosDB Mongodb 查询速度慢

    我正在使用 MongoDB api 访问 Azure 上的 CosmosDb 我收集了几千份文件 它们的形状如下 id ObjectId 5b4f574ac2100c890805a7d8 id 12 name Spotted Owl ove
  • 错误:找不到 vcvarsall.bat

    我尝试安装Python包dulwich https pypi python org pypi dulwich pip install dulwich 但我收到一条神秘的错误消息 error Unable to find vcvarsall
  • Jquery Serialize 仅适用于 IE

    有了这个 我列出了我的代码 它在所有浏览器中都可以正常工作 但在 IE 中却不行 我在堆栈溢出中搜索了解决方案 但仍然无法修复 请有人帮助我吗 this serialize 在 IE 中返回空 Form UserTripSearch liv
  • 如何在主线程中获取异步结果

    我正在 Windows Phone 7 应用程序上制作登录页面 当异步线程上的服务器返回登录错误消息时 我想在登录页面上获取登录错误状态代码 所以我的问题是 在下面的代码示例中 请告诉我如何在 Main 方法中获取 响应字符串 字符串 ht
  • 从 C# 应用程序中的配置文件检索值不起作用

    当我尝试使用配置文件时遇到问题 我在这里和其他地方读过一些帖子 但工作上的问题却解决不了 在我的问题中 我添加了配置
  • 元素矩阵乘法:R 与 Rcpp(如何加速此代码?)

    我是新来的C 编程 使用Rcpp无缝集成到R 并且我希望得到一些有关如何加快某些计算速度的建议 考虑以下示例 testmat lt matrix 1 9 nrow 3 testvec lt 1 3 testmat testvec 1 2 3
  • CryptographicException:密钥在指定状态下使用无效

    我是 C 新手 我不明白为什么它会产生问题 CspParameters cspParams new CspParameters 24 cspParams KeyContainerName XML DISG RSA KEY RSACrypto
  • 出现错误:连接 ECONNREFUSED 127.0.0.1:3306

    我是 Node js 的初学者 正在学习有关如何为 Android 设置 Node js 服务器的教程 当我执行这个命令时 nodemon app js我收到这个错误 nodemon 1 19 0 nodemon to restart at
  • 相当于 Clojure 函数的 Java toString()

    我正在使用一些 Java 代码调用toString 在我的 Clojure 函数对象上 它返回类似的内容
  • 为什么在 Weblogic 集群中使用单播与组播

    从文档中并不清楚为什么应该在 WebLogic 集群中使用单播而不是多播 有人有使用这两者的经验以及迁移到 Unicast 的好处吗 单播和组播的主要区别如下 Unicast 假设集群中有三台服务器 MS 1 MS 2 MS 3 如果它们必
  • 如何跟踪 Node.js 中的(更改的)日志文件

    好吧 这似乎是一个简单的问题 但我无法从这里找到答案 因此我将其发布 希望有人可能遇到类似的问题 我需要监视指向 Web 服务器文件的符号链接 var log lighttpd error log更具体地说 感谢莱纳斯 G 蒂尔 https