[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已完成】自制批处理日志方面的疑问

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

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

回复 8# chouxia


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

评分人数

TOP

回复 7# CrLf


    客户端运行的时候不需要制定server端的ip吗?
看了你提供的帖子。发现没有客户端是否需要指定服务器ip的说明

TOP

本帖最后由 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.*
复制代码
1

评分人数

TOP

本帖最后由 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.*.*?

TOP

楼上的 你解决了我全部脚本的日志问题。
我的所有服务器都可以写日志了。
但是还有一个问题。
如果我需要分别写几个日志怎么办?

TOP

试试用这个: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 中
复制代码
服务器只需启用一次
1

评分人数

TOP

这么说分开log可能会好些
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

wait…
这几天正好在折腾这个小工程,有空发上来
1

评分人数

TOP

返回列表