首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Pantheios写入扩展文件

将Pantheios写入扩展文件
EN

Stack Overflow用户
提问于 2014-01-08 14:24:40
回答 1查看 268关注 0票数 0

我环顾四周,却找不到该怎么做的答案。我正在尝试使用Pantheios进行日志记录,并希望写入外部文件(否则有什么意义)。我正在遵循提供的一个示例,但它似乎没有在任何地方创建日志文件。以下是代码:

编辑: pantheios_be_file_setFilePath还返回-4 (PANTHEIOS_INIT_RC_UNSPECIFIED_FAILURE),所以thats.....not很有帮助

代码语言:javascript
复制
    #include "stdafx.h"
    #include <pantheios/pantheios.hpp> 
    #include <pantheios/implicit_link/core.h>
    #include <pantheios/implicit_link/fe.simple.h> 
    #include <pantheios/implicit_link/be.WindowsConsole.h>
    #include <pantheios/implicit_link/be.file.h>
    #include <pantheios/frontends/fe.simple.h>
    #include <pantheios/backends/bec.file.h>
    #include <pantheios/inserters/args.hpp>

    PANTHEIOS_EXTERN_C const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("LogTest");

    int _tmain(int argc, _TCHAR* argv[])
    {
        try
        {
            pantheios_be_file_setFilePath(PANTHEIOS_LITERAL_STRING("testlogforme.log"),  PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BEID_ALL);


            pantheios::log(pantheios::debug, "Entering main(", pantheios::args(argc,argv, pantheios::args::arg0FileOnly), ")");

            pantheios::log_DEBUG("debug yo");
            pantheios::log_INFORMATIONAL("informational fyi");
            pantheios::log_NOTICE("notice me!");
            pantheios::log_WARNING("warning!!");
            pantheios::log_ERROR("error omg");
            pantheios::log_CRITICAL("critical!!!");
            pantheios::log_ALERT("alert mang");
            pantheios::log_EMERGENCY("EMERGENCY!!!!!");

            pantheios_be_file_setFilePath(NULL, PANTHEIOS_BEID_ALL);

            system("pause");
            return EXIT_SUCCESS;
        }
        catch(std::bad_alloc&)
        {
            pantheios::log_ALERT("out of memory");
        }
        catch(std::exception& x)
        {
            pantheios::log_CRITICAL("Exception: ", x);
        }
        catch(...)
        {
            pantheios::puts(pantheios::emergency, "Unexpected unknown error");
        }

        return EXIT_FAILURE;
    }

也许我没有打电话给一个方法,或者它没有被保存到一个好的位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-09 13:57:15

事实证明,泛亚的一些例子是不正确的。即使您使用的是pantheios_init(),也需要调用C++ ()。下面是我在删除所有代码并实现了一个工作示例之后的工作示例。

代码语言:javascript
复制
    // Headers for main()
    #include <pantheios/pantheios.hpp> 
    #include <pantheios/backends/bec.file.h> 

    // Headers for implicit linking
    #include <pantheios/implicit_link/core.h>
    #include <pantheios/implicit_link/fe.simple.h>
    #include <pantheios/implicit_link/be.file.h>

    PANTHEIOS_EXTERN_C const char PANTHEIOS_FE_PROCESS_IDENTITY[] = "testLOL";

    int main()
    {
        if(pantheios::pantheios_init() < 0)
        {
            return 1;
        }

        pantheios::log_NOTICE("log-1"); // save until log file set
        pantheios_be_file_setFilePath("mylogfile.log"); // sets log file; write "log-1" stmt
        pantheios::log_NOTICE("log-2"); // write "log-2" stmt
        pantheios_be_file_setFilePath(NULL); // close "mylogfile"


        pantheios::log_NOTICE("log-3"); // save until log file set
        pantheios_be_file_setFilePath("mylogfile2.log"); // sets log file; write "log-3" stmt
        pantheios::log_NOTICE("log-4"); // write "log-4" stmt

        //system("pause");
        return 0;
    } // closes "mylogfile2" during program closedown

我在堆栈溢出的另一个帖子上找到了这个示例,但是正如我所说的,内置的示例不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20998306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档