Board logo

标题: [文本处理] 【已完成】自制批处理日志方面的疑问 [打印本页]

作者: chouxia    时间: 2015-10-2 14:24     标题: 【已完成】自制批处理日志方面的疑问

本帖最后由 chouxia 于 2015-10-3 14:32 编辑

现在有N个批处理可能会同时运行,为了记录运行状态,我在每个批处理中用echo  xxxx >>log.txt这样的方式将我需要的日志内容写入文件。
这样的方法优点是代码比较简单。缺点是echo写入的时候txt有一瞬间txt文件被锁定。
现在有一个问题,在txt被锁定的一瞬间,别的bat会写日志失败。
而echo我不知道是否有errorlevel。
所以来请教下,有什么靠谱的方法来实现日志写入嘛?
作者: CrLf    时间: 2015-10-2 18:33

wait…
这几天正好在折腾这个小工程,有空发上来
作者: cjiabing    时间: 2015-10-2 20:33

这么说分开log可能会好些
作者: CrLf    时间: 2015-10-3 06:43

试试用这个:http://www.bathome.net/viewthread.php?tid=37531

启用一个服务器,之后用本机任何一个进程都能通过该服务器端统一写入日志,因为 JavaScript 是通过事件轮询机制来实现单线程运行的,所以不会发生同时写入的情况。
  1. @echo off
  2. start cmd /c "node.exe Bridge.js server 192.168.0.* >日志.log 2>&1"
  3. ::创建一个服务器端,默认监听端口为 8848,默认管理员 IP 为 127.0.0.1
  4. ::IP 为 192.168.0.* 的用户均可接入,但不能进行风险操作
  5. node.exe Bridge.js log Text FileName
  6. ::客户端命令服务器端记录一条日志,内容为 Text,保存在 FileName.log 中
复制代码
服务器只需启用一次
作者: chouxia    时间: 2015-10-3 13:21

楼上的 你解决了我全部脚本的日志问题。
我的所有服务器都可以写日志了。
但是还有一个问题。
如果我需要分别写几个日志怎么办?
作者: chouxia    时间: 2015-10-3 13:24

本帖最后由 chouxia 于 2015-10-3 13:27 编辑

CrLf
你看我的理解对不对
开机的时候执行start cmd /c "node.exe Bridge.js server 192.168.0.* >日志.log 2>&1"
就好。
这个“日志.log”可以不是我想写入内容的文件。
正式写入内容的时候我可以用node.exe Bridge.js log Text FileName来随意写。 FileName是可以随便换的?
如果是多个网段通讯呢?改成192.168.*.*?
作者: CrLf    时间: 2015-10-3 13:40

本帖最后由 CrLf 于 2015-10-3 13:43 编辑

回复 6# chouxia


    server 端输出的只是运行时产生的关键信息回显(就是你给的例子中输出到日志.txt 的内容),仅用于观察服务器端的运行状态,真正的日志由客户端的 log 命令发布,默认保存在 Bridge_服务器端启动时间.log 中,当然你也可以用 log 命令的第二参数自定义文件名
多网段通讯可以写成:
  1. node bridge.js server 192.168.*.*
复制代码
更精确一点可以这样:
  1. node bridge.js server 192.168.1.* 192.168.2.*
复制代码

作者: chouxia    时间: 2015-10-3 14:03

回复 7# CrLf


    客户端运行的时候不需要制定server端的ip吗?
看了你提供的帖子。发现没有客户端是否需要指定服务器ip的说明
作者: CrLf    时间: 2015-10-3 14:19

回复 8# chouxia


    忘了说明,非本机的客户端要这样:
  1. node bridge.js 192.168.0.100 log 日志内容 日志名[可选]
  2. ::连接 IP 为 192.168.0.100 的服务器,默认使用 8848 端口
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2