Changeset 2466


Ignore:
Timestamp:
24/03/2009 16:55:46 (3 years ago)
Author:
chris
Message:

Add ability to specify a named log facility for syslog loggins,
requested by Kenny Millington.

Location:
box/trunk/lib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • box/trunk/lib/common/Logging.cpp

    r2465 r2466  
    217217} 
    218218 
     219void Logging::SetFacility(int facility) 
     220{ 
     221        spSyslog->SetFacility(facility); 
     222} 
     223 
    219224Logger::Logger()  
    220225: mCurrentLevel(Log::EVERYTHING)  
     
    391396} 
    392397 
    393 Syslog::Syslog() 
    394 { 
    395         ::openlog("Box Backup", LOG_PID, LOG_LOCAL6); 
     398Syslog::Syslog() : mFacility(LOG_LOCAL6) 
     399{ 
     400        ::openlog("Box Backup", LOG_PID, mFacility); 
    396401} 
    397402 
     
    405410        mName = rProgramName; 
    406411        ::closelog(); 
    407         ::openlog(mName.c_str(), LOG_PID, LOG_LOCAL6); 
     412        ::openlog(mName.c_str(), LOG_PID, mFacility); 
     413} 
     414 
     415void Syslog::SetFacility(int facility) 
     416{ 
     417        mFacility = facility; 
     418        ::closelog(); 
     419        ::openlog(mName.c_str(), LOG_PID, mFacility); 
     420} 
     421 
     422int Syslog::GetNamedFacility(const std::string& rFacility) 
     423{ 
     424        #define CASE_RETURN(x) if (rFacility == #x) { return LOG_ ## x; } 
     425        CASE_RETURN(LOCAL0) 
     426        CASE_RETURN(LOCAL1) 
     427        CASE_RETURN(LOCAL2) 
     428        CASE_RETURN(LOCAL3) 
     429        CASE_RETURN(LOCAL4) 
     430        CASE_RETURN(LOCAL5) 
     431        CASE_RETURN(LOCAL6) 
     432        CASE_RETURN(DAEMON) 
     433        #undef CASE_RETURN 
     434 
     435        BOX_ERROR("Unknown log facility '" << rFacility << "', " 
     436                "using default LOCAL6"); 
     437        return LOG_LOCAL6; 
    408438} 
    409439 
  • box/trunk/lib/common/Logging.h

    r2417 r2466  
    203203        private: 
    204204        std::string mName; 
     205        int mFacility; 
    205206 
    206207        public: 
     
    212213        virtual const char* GetType() { return "Syslog"; } 
    213214        virtual void SetProgramName(const std::string& rProgramName); 
     215        virtual void SetFacility(int facility); 
     216        static int GetNamedFacility(const std::string& rFacility); 
    214217}; 
    215218 
     
    261264        static void SetProgramName(const std::string& rProgramName); 
    262265        static std::string GetProgramName() { return sProgramName; } 
     266        static void SetFacility(int facility); 
    263267 
    264268        class Guard 
  • box/trunk/lib/server/Daemon.cpp

    r2460 r2466  
    481481                        mapConfiguration->GetSubConfiguration("Server")); 
    482482 
     483                if(serverConfig.KeyExists("LogFacility")) 
     484                { 
     485                        std::string facility = 
     486                                serverConfig.GetKeyValue("LogFacility"); 
     487                        Logging::SetFacility(Syslog::GetNamedFacility(facility)); 
     488                } 
     489 
    483490                // Open PID file for writing 
    484491                pidFileName = serverConfig.GetKeyValue("PidFile"); 
  • box/trunk/lib/server/Daemon.h

    r2356 r2466  
    106106#define DAEMON_VERIFY_SERVER_KEYS \ 
    107107        ConfigurationVerifyKey("PidFile", ConfigTest_Exists), \ 
     108        ConfigurationVerifyKey("LogFacility", 0), \ 
    108109        ConfigurationVerifyKey("User", ConfigTest_LastEntry) 
    109110 
Note: See TracChangeset for help on using the changeset viewer.