takayama-lily / oicq

Tencent QQ Bot Library for Node.js
https://oicqjs.github.io/oicq/
Mozilla Public License 2.0
2.67k stars 402 forks source link

如何自定义输出日志, 并将其储存到文件中, 而不是输出到控制台上 #452

Open Nekobaex opened 1 year ago

Nekobaex commented 1 year ago

Node.js Version

19.0.0

Package(oicq) Version

2.2.0

Login Protocol

Watch

Bug Description (最好截图说明,你的文字描述可能无法准确传达信息)

我通过搜索, 在上层发现一般的日志是通过 logger.mark() 方法输出到控制台, 于是我通过调试, 追踪到 logger.js 中的一个叫 Logger 类的 log 方法, 但发现它有点小复杂, 要实现自定义的话, 有点超出了我的能力🤣

Log Details (控制台日志,请提供包含前后一段时间内的)

No response

Nekobaex commented 1 year ago

我想到的一个解决方法, 直接把所有与 logger 相关的逻辑都删掉, 去掉消息自动更新, 所有信息通过循环每隔一段时间手动请求更新一次

Stapxs commented 1 year ago

在 shell 里你可以直接像这样把输出流指定到文本文件里 至于要自定 log 内容就只能自己想办法改了( image

lc-cn commented 1 year ago

oicq 用的是log4js,你可以直接更改log4js的输出,比如这样

const log4js=require('log4js')
log4js.configure({  
    appenders: {  
        fileout: { type: "file", filename: "fileout.log" }, 
        datafileout: {
            type: "dateFile", 
            filename: "datafileout.log", 
            pattern: ".yyyy-MM-dd-hh-mm-ss-SSS"
        },
        consoleout: { type: "console" }, 
    }, 
    categories: {    
        default: { appenders: ["fileout", "consoleout"], level: "debug" }
    }
});