如何跟踪 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 中的(更改的)日志文件 的相关文章

  • 在回调中使用await(Microsoft Bot Framework v4 Nodejs)

    我正在尝试将回复发送回chatbot emulator从内部回调 async getUserDetails step console log inside get userdetaiuls modeiule this userDBObjec
  • 如何使用remark将markdown解析为json

    The 备注站点 https remark js org 有一个 AST 浏览器的链接 用于输出备注 https astexplorer net gist 0a92bbf654aca4fdfb3f139254cf0bad ffe102014
  • 在node.js中加载并执行外部文件

    从另一个节点js文件运行一个节点js文件是否容易 可能 例如 我有两个文件 test1 js 和 test2 js 我想从 test2 js 执行 test1 js 文件 我认为完成你想做的事情的更好方法是按照我的其他答案建议的去做 但是要
  • 具有 Firebase (FCM) 推送通知的 Node js

    我正在使用 Node js 开发 REST api 并且有一个休息端点来发送 firebase 推送通知 我的代码如下 const bodyParser require body parser var cors require cors v
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 如何使用 Passport 验证 Supertest 请求?

    我使用 Passport js 进行身份验证 本地策略 并使用 Mocha 和 Supertest 进行测试 如何使用 Supertest 创建会话并发出经过身份验证的请求 正如 zeMirco 指出的那样 底层superagent模块支持
  • 如何在 Node.js 中进行多个 API 调用并在每次调用之间有延迟

    我的目标是对数据列表进行多个 api 调用 假设我有以下代码 const axios require axios const axiosRequests const strings a b c for let str of strings
  • 建立 TCP 连接边界的正确方法

    我的问题是关于如何正确处理使用 tcp 连接接收的数据 事实上 通过建立 tcp 连接 创建了一个流 假设我想发送一条有开头和结尾的消息 由于数据在流中流动而没有指定任何边界 我如何识别消息的开始和结束 我想在消息的开头和结尾处放置一些特殊
  • 除 .spec.js 之外的每个 .js 文件的节点 glob 模式

    我正在寻找更好的全局模式以供使用 我想找到所有 js文件但排除 spec js文件 到目前为止我有以下解决方案 我目前拥有的解决方案要求我不断添加文件扩展名以排除它们 否则它们会被拾取 例如 html files 我试图让它只寻找 js文件
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • Google App Engine - 节点:找不到模块“firebase-admin”

    第一次在这里部署 GAE 应用程序 我尝试遵循本教程 https firebase googleblog com 2016 08 sending notifications Between android html https fireba
  • 为什么changeResourceRecordSets没有被授权访问此资源?

    我正在尝试在 Route 53 中创建一条别名类型的新记录 以告诉 Route 53 起诉 CloudFront 来为该站点提供服务 我正在尝试使用以下代码来执行此操作 let options ChangeBatch Changes Act
  • 节点:以编程方式检查包的最新版本

    我希望我的节点包 在 npm 上发布 在新版本可用时提醒用户 如何以编程方式检查已发布软件包的最新版本并将其与当前版本进行比较 Thanks 您可以结合npmview https npmjs com package npmview 用于获取
  • 如何找到您在服务器中的加入位置

    寻找一种方法来查找您何时按位置加入服务器 例如 如果我是服务器的所有者 我将是 1 因为我先加入 然后如果我在所有者之后加入 我将是 2 如果我在 20 人加入后加入 我将是 21 依此类推 有谁知道如何在 Node Js 中解决这个问题
  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic
  • PDF 附件 NodeMailer

    预先感谢您的回复 我编写了一些使用nodemailer 0 7 1的代码 它发送电子邮件并将pdf附加到电子邮件中 但是 pdf 附件在编码时会自行损坏或截断或发生其他情况 我之所以说这是附件之前的文件 即我本地的文件 是512kb 而电子
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • 具有客户端/服务器节点设置的 Webpack?

    我正在尝试为带有节点后端服务器的 Angular2 应用程序设置基于 webpack 的流程 经过几个小时的努力 我已经成功地让客户端愉快地构建了 但我现在不知道如何集成我的服务器构建 我的服务器使用生成器 因此必须以 ES6 为目标 并且
  • 在java中加密字符串,在node.js中解密,错误:解密失败

    我正在尝试用 java 加密一个字符串 将其发送到我的 node js 服务器 然后解密 但是 当我尝试执行此操作时 尝试解密时会不断出现错误 Java加密 String privateKey someprivatekey String d

随机推荐

  • 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