1

我在 Linux 中使用 log4cplus-1.1.2。似乎没有办法设置thread_namethread_name2in struct per_thread_data

struct per_thread_data文件 internal.h 中第 111-130 行的定义如下:

//! Per thread data.
struct per_thread_data
{
    per_thread_data ();
    ~per_thread_data ();

    tostringstream macros_oss;
    tostringstream layout_oss;
    DiagnosticContextStack ndc_dcs;
    MappedDiagnosticContextMap mdc_map;
    log4cplus::tstring thread_name;
    log4cplus::tstring thread_name2;
    gft_scratch_pad gft_sp;
    appender_sratch_pad appender_sp;
    log4cplus::tstring faa_str;
    log4cplus::tstring ll_str;
    spi::InternalLoggingEvent forced_log_ev;
    std::FILE * fnull;
    log4cplus::helpers::snprintf_buf snprintf_buf;
};

log4cplus 将为每个线程分配这样的结构以进行日志记录。

调用LOG4CPLUS_EXPORT log4cplus::tstring const & getCurrentThreadName()LOG4CPLUS_EXPORT log4cplus::tstring const & getCurrentThreadName2()是分别访问thread_name和的唯一方法thread_name2。但是,用户不能修改他们的值。

4

1 回答 1

0

现在可以在 log4cplus 中设置线程名称,因为 log4cplus 1.1.3-RC4 和 log4cplus 1.2.0-RC3 使用log4cplus::thread::setCurrentThreadName()log4cplus::thread::setCurrentThreadName2()

于 2015-12-01T06:16:14.360 回答