]> git.stg.codes - stg.git/blob - stglibs/stg_logger.lib/stg_logger.h
Merge branch 'master' of madf.dyndns.org:/var/git/stg
[stg.git] / stglibs / stg_logger.lib / stg_logger.h
1 #ifndef STG_LOGGER_H
2 #define STG_LOGGER_H
3
4 #include <pthread.h>
5 #include <string>
6 #include "noncopyable.h"
7
8 const char * LogDate(time_t t);
9 //-----------------------------------------------------------------------------
10 class STG_LOGGER;
11 STG_LOGGER & GetStgLogger();
12 //-----------------------------------------------------------------------------
13 class STG_LOGGER_LOCKER : private NONCOPYABLE
14 {
15 public:
16     STG_LOGGER_LOCKER(pthread_mutex_t * m) : mutex(m) { pthread_mutex_lock(mutex); };
17     ~STG_LOGGER_LOCKER() { pthread_mutex_unlock(mutex); };
18 private:
19     pthread_mutex_t * mutex;
20 };
21 //-----------------------------------------------------------------------------
22 class STG_LOGGER
23 {
24 friend STG_LOGGER & GetStgLogger();
25
26 public:
27     ~STG_LOGGER();
28     void SetLogFileName(const std::string & fn);
29     void operator()(const char * fmt, ...);
30
31 private:
32     STG_LOGGER();
33     const char * LogDate(time_t t);
34
35     std::string fileName;
36     pthread_mutex_t mutex;
37 };
38 //-----------------------------------------------------------------------------
39
40 #endif //STG_LOGGER_H