国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

刪除了配置stdoutFile的日志文件沒辦法自動(dòng)再次生成

freely

bug描述

在初始化啟動(dòng)時(shí)配置了stdoutFile的日志輸出文件,配置成功后,啟動(dòng)workerman后,也是有正常在對應(yīng)的目錄下生成這個(gè)日志文件,但是一但在運(yùn)行中刪除掉這個(gè)日志文件,那么不會(huì)再重新生成這個(gè)日志文件了,就算手工增加了相同文件名的日志文件,也是一樣沒有再將日志寫入到這個(gè)日志文件里。必需要停止服務(wù)然后再啟動(dòng)服務(wù)才會(huì)又生成文件。
有啥方法可以讓在運(yùn)行中時(shí),刪除掉這日志文件后當(dāng)有日志信息時(shí)又會(huì)自動(dòng)生成這個(gè)文件呢?
而workerman本身的日志文件(workerman目錄下的workerman.log)就行。刪除了,會(huì)自動(dòng)生成新的。

程序代碼或配置

class Server{
    public function __construct(){
        Autoloader::setRootPath(__DIR__);

        // 獲取插件配置
        $config = Config::get('config');

        //所有的打印輸出全部保存在tmp/stdout.log文件中
        Worker::$stdoutFile = './stdout.log';

        // register 必須是text協(xié)議
        $register = new Register('text://0.0.0.0:' . $config['register_port']);

        // bussinessWorker 進(jìn)程
        $worker = new BusinessWorker();
        // worker名稱
        $worker->name = 'SysMsgBusinessWorker';

系統(tǒng)環(huán)境及workerman/webman等具體版本

TP5+workerman4.0.19+gatewayworker

1715 3 1
3個(gè)回答

nitron

修改框架代碼,每次寫入前檢測文件是否存在,不存在就創(chuàng)建

  • freely 2022-12-10

    這是我按workerman文檔里設(shè)置stdoutFile這個(gè)文件名的,這個(gè)必需是在Worker::runAll();前執(zhí)行,總不能去修改Workerman框架吧。

  • nitron 2022-12-10

    是的,修改框架源代碼

北月妖王

如果只是想清空日志文件,大可不必刪掉它,可以采用一個(gè)取巧的方式:
echo '' > xxx.log

  • 暫無評(píng)論
walkor 打賞

標(biāo)準(zhǔn)輸出重定向都是這樣的,其他語言程序也以一樣,刪除后不會(huì)重新建立文件。
需要程序觸發(fā)重新重定向邏輯,代碼類似

$worker->onWorkerReload = function($worker) {
    unlink(Worker::$stdoutFile);
    Worker::resetStd();
}

這樣每次要?jiǎng)h除stdoutFile 的時(shí)候執(zhí)行 php start.php reload 即可。

你也可以在onWorkerStart時(shí)弄個(gè)定時(shí)器,每天凌晨重置$worker::$stdoutFile = '/var/log/workerman.' . date('Y-m-d') . '.log'; 以日期分割文件,手動(dòng)或自動(dòng)刪除之前多少天的文件。

年代過于久遠(yuǎn),無法發(fā)表回答
??