2
回答
zlog能实时输出的日志?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
我想在zlog实时输出日志应该如何设置?
举报
goodcyg
发帖于4年前 2回/800阅
共有2个答案 最后回答: 4年前

int main(int argc, char **argv)
{
    int rc;
    zlog_category_t *zc;

    rc = zlog_init("D:\\Tools\\video\\C++good\\WinZlog-master\\zlog\\test\\Debug\\test_hello.conf");
    if (rc)
    {
        printf("init failed\n");
        return -1;
    }

    zc = zlog_get_category("my_cat");
    if (!zc)
    {
        printf("get cat fail\n");
        zlog_fini();
        return -2;
    }

    zlog_info(zc, "hello, zlog");
 zlog_warn(zc, "warn, zlog");
 zlog_debug(zc,"Debug,zlog");
 zlog_error(zc,"error,zlog");
 zlog_notice(zc,"notice,zlog");
 zlog_fatal(zc,"fatal,zlog");

    zlog_fini();

    return 0;
}

我的意思是在这里zlog_error(zc,"error,zlog");
打上断点,运行到这里就输出日志到文件里。

conf是这样写的

[formats]
simple = "%D.%ms %m%n"
simple2 = "%D.%us %m%n"
[rules]
my_cat.*  -".\my.log"
my_cat.*  >stdout;simple
my_cat.*  >stdout;simple2

调试跟踪了发现

    switch (file_path[0])
    {
        case '-' :
            /* sync file each time write log */
            if (file_path[1] != '"')
            {
                zc_error(" - must set before a file output");
                goto err;
            }

            /* no need to fsync, as file is opened by O_SYNC, write immediately */
            a_rule->fsync_period = 0;

程序运行到这里了,说明同步已经成功了,一直往下运行,直到zlog_error(zc,"error,zlog");
还没有输出日志,偶尔程序运行完才输出日志?是不是程序bug?

还有关于文档说路径前加"-",我试了好几种写法都不对,最后-".\my.log"
这种写法算是对了。最好是在文档里写个详细的例子。免得用起来有障碍。

 

顶部