void STDLogManager::Init()

in modules/jpda/src/main/native/jdwp/common/agent/core/LogManager.cpp [70:115]


void STDLogManager::Init(const char* log, const char* kindFilter, const char* srcFilter)
    throw(AgentException)
{
    if (srcFilter != 0 && strcmp("all", srcFilter) == 0) {
        srcFilter = 0; // null equvivalent to "all"
    }

    m_fileFilter = srcFilter;
    bool hasFiles = m_fileFilter != 0;// && strstr(m_fileFilter, ".cpp") != 0;

    if (kindFilter == 0 || strcmp("none", kindFilter) == 0) {
        for (int i = 0; i < LOG_KIND_NUM; i++) {
            m_logKinds[i] = TRACE_KIND_NONE;
        }
    }
    else if (strcmp("all", kindFilter) == 0) {
        for (int i = 0; i < LOG_KIND_NUM; i++) {
            m_logKinds[i] = hasFiles ? TRACE_KIND_FILTER_FILE : TRACE_KIND_ALWAYS;
        }
    }
    else {
        for (int i = 0; i < LOG_KIND_NUM; i++) {
            if (strstr(kindFilter, s_logKinds[i].name) != 0) {
                m_logKinds[i] = hasFiles ? TRACE_KIND_FILTER_FILE : TRACE_KIND_ALWAYS;
            }
            else {
                m_logKinds[i] = TRACE_KIND_NONE;
            }
        }
    }

    m_logKinds[LOG_KIND_INFO] = TRACE_KIND_ALWAYS;
    m_logKinds[LOG_KIND_ERROR] = TRACE_KIND_ALWAYS;

    if (log == 0) {
        m_logStream = &clog;
    } else {
        m_logStream = new ofstream(log);
        if (m_logStream == 0) {
            fprintf(stderr, "Cannot open log file: %s\n", log);
            m_logStream = &clog;
        }
    }

    m_monitor = new AgentMonitor("_agent_Log");
}