Beispiel #1
0
	bool OnLoad(const CString & sArgs, CString & sMessage) override {
		CString sTarget = GetNV("target");
		if (sTarget.Equals("syslog"))
			m_eLogMode = LOG_TO_SYSLOG;
		else if (sTarget.Equals("both"))
			m_eLogMode = LOG_TO_BOTH;
		else if (sTarget.Equals("file"))
			m_eLogMode = LOG_TO_FILE;
		else
			m_eLogMode = LOG_TO_FILE;

		SetLogFilePath(GetNV("path"));

		Log("Logging started. ZNC PID[" + CString(getpid()) + "] UID/GID[" + CString(getuid()) + ":" + CString(getgid()) + "]");
		return true;
	}
Beispiel #2
0
	void OnTargetCommand(const CString& sCommand) {
		CString sArg = sCommand.Token(1, false);
		CString sTarget;
		CString sMessage;
		LogMode mode;

		if (sArg.Equals("file")) {
			sTarget = "file";
			sMessage = "Now logging to file";
			mode = LOG_TO_FILE;
		} else if (sArg.Equals("syslog")) {
			sTarget = "syslog";
			sMessage = "Now only logging to syslog";
			mode = LOG_TO_SYSLOG;
		} else if (sArg.Equals("both")) {
			sTarget = "both";
			sMessage = "Now logging to syslog and file";
			mode = LOG_TO_BOTH;
		} else {
			if (sArg.empty()) {
				PutModule("Usage: Target <file|syslog|both> [path]");
			} else {
				PutModule("Unknown target");
			}
			return;
		}

		if (mode != LOG_TO_SYSLOG) {
			CString sPath = sCommand.Token(2, true);
			SetLogFilePath(sPath);
			sMessage += " [" + sPath + "]";
		}

		Log(sMessage);
		SetNV("target", sTarget);
		m_eLogMode = mode;
		PutModule(sMessage);
	}
extern "C" BOOL
#ifndef FEATURE_PAL
    APIENTRY
#endif // !FEATURE_PAL
    DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
#ifdef FEATURE_PAL
            if (0 != PAL_InitializeDLL())
            {
                fprintf(stderr, "Error: Fail to PAL_InitializeDLL\n");
                exit(1);
            }
#endif // FEATURE_PAL

            Logger::Initialize();
            SetLogFilePath();
            Logger::OpenLogFile(g_logFilePath);
            break;

        case DLL_PROCESS_DETACH:
            Logger::Shutdown();

            delete[] g_logFilePath;
            g_logFilePath = nullptr;

            break;

        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
            break;
    }
    return TRUE;
}