move logging cpp code into log.cpp
This commit is contained in:
@@ -147,93 +147,6 @@ namespace mongo {
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
class LoggingManager {
|
||||
public:
|
||||
LoggingManager()
|
||||
: _enabled(0) , _file(0) {
|
||||
}
|
||||
|
||||
void start( const string& lp , bool append ){
|
||||
uassert( 10268 , "LoggingManager already started" , ! _enabled );
|
||||
_append = append;
|
||||
|
||||
// test path
|
||||
FILE * test = fopen( lp.c_str() , _append ? "a" : "w" );
|
||||
if ( ! test ){
|
||||
cout << "can't open [" << lp << "] for log file" << endl;
|
||||
dbexit( EXIT_BADOPTIONS );
|
||||
assert( 0 );
|
||||
}
|
||||
fclose( test );
|
||||
|
||||
_path = lp;
|
||||
_enabled = 1;
|
||||
rotate();
|
||||
}
|
||||
|
||||
void rotate(){
|
||||
if ( ! _enabled ){
|
||||
cout << "LoggingManager not enabled" << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( _file ){
|
||||
#ifdef _WIN32
|
||||
cout << "log rotation doesn't work on windows" << endl;
|
||||
return;
|
||||
#else
|
||||
struct tm t;
|
||||
localtime_r( &_opened , &t );
|
||||
|
||||
stringstream ss;
|
||||
ss << _path << "." << ( 1900 + t.tm_year ) << "-" << t.tm_mon << "-" << t.tm_mday
|
||||
<< "_" << t.tm_hour << "-" << t.tm_min << "-" << t.tm_sec;
|
||||
string s = ss.str();
|
||||
rename( _path.c_str() , s.c_str() );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
FILE* tmp = fopen(_path.c_str(), (_append ? "a" : "w"));
|
||||
if (!tmp){
|
||||
cerr << "can't open: " << _path.c_str() << " for log file" << endl;
|
||||
dbexit( EXIT_BADOPTIONS );
|
||||
assert(0);
|
||||
}
|
||||
|
||||
Logstream::setLogFile(tmp); // after this point no thread will be using old file
|
||||
|
||||
if (_file){
|
||||
fclose(_file);
|
||||
}
|
||||
|
||||
_file = tmp;
|
||||
_opened = time(0);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
bool _enabled;
|
||||
string _path;
|
||||
bool _append;
|
||||
|
||||
FILE * _file;
|
||||
time_t _opened;
|
||||
|
||||
} loggingManager;
|
||||
|
||||
void initLogging( const string& lp , bool append ){
|
||||
cout << "all output going to: " << lp << endl;
|
||||
loggingManager.start( lp , append );
|
||||
}
|
||||
|
||||
void rotateLogs( int signal ){
|
||||
loggingManager.rotate();
|
||||
}
|
||||
|
||||
// done *before* static initialization
|
||||
FILE* Logstream::logfile = stdout;
|
||||
|
||||
string errnoWithPrefix( const char * prefix ){
|
||||
stringstream ss;
|
||||
if ( prefix )
|
||||
|
||||
Reference in New Issue
Block a user