diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-10-23 14:51:55 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-10-23 14:51:55 +0200 |
commit | 33a1ad38ba6d92961529a76007c26bb1f5c6343d (patch) | |
tree | bd779ca411ed7a6aa1b75402e5632ea8937554a4 /vespalog | |
parent | 1579514b4a757e9038728dbbeecd27a8b812ce66 (diff) |
Use singleton for ns_log::BufferedLogger.
Diffstat (limited to 'vespalog')
-rw-r--r-- | vespalog/src/test/bufferedlogskiptest.cpp | 8 | ||||
-rw-r--r-- | vespalog/src/test/bufferedlogtest.cpp | 20 | ||||
-rw-r--r-- | vespalog/src/vespa/log/bufferedlogger.cpp | 9 | ||||
-rw-r--r-- | vespalog/src/vespa/log/bufferedlogger.h | 26 | ||||
-rw-r--r-- | vespalog/src/vespa/log/log.cpp | 2 |
5 files changed, 35 insertions, 30 deletions
diff --git a/vespalog/src/test/bufferedlogskiptest.cpp b/vespalog/src/test/bufferedlogskiptest.cpp index 56f59541eaf..ac0bb585be9 100644 --- a/vespalog/src/test/bufferedlogskiptest.cpp +++ b/vespalog/src/test/bufferedlogskiptest.cpp @@ -61,9 +61,9 @@ void testSkipBufferOnDebug(const std::string& file, uint64_t & timer) void reset(uint64_t & timer) { timer = 0; - ns_log::BufferedLogger::logger.setMaxCacheSize(10); - ns_log::BufferedLogger::logger.setMaxEntryAge(300); - ns_log::BufferedLogger::logger.setCountFactor(5); + ns_log::BufferedLogger::instance().setMaxCacheSize(10); + ns_log::BufferedLogger::instance().setMaxEntryAge(300); + ns_log::BufferedLogger::instance().setCountFactor(5); } int @@ -76,7 +76,7 @@ main(int argc, char **argv) ns_log::Logger::fakePid = true; uint64_t timer; logger.setTimer(std::unique_ptr<ns_log::Timer>(new ns_log::TestTimer(timer))); - ns_log::BufferedLogger::logger.setTimer(std::unique_ptr<ns_log::Timer>(new ns_log::TestTimer(timer))); + ns_log::BufferedLogger::instance().setTimer(std::unique_ptr<ns_log::Timer>(new ns_log::TestTimer(timer))); reset(timer); testSkipBufferOnDebug(argv[1], timer); diff --git a/vespalog/src/test/bufferedlogtest.cpp b/vespalog/src/test/bufferedlogtest.cpp index 39990a26b2a..8399fa81dfa 100644 --- a/vespalog/src/test/bufferedlogtest.cpp +++ b/vespalog/src/test/bufferedlogtest.cpp @@ -112,9 +112,9 @@ void testThatEntriesWithHighCountsAreEventuallyRemoved( // Should eventually throw out the entries with high count timer = 10 * 1000000 + 4; // Make sure we don't remove due to age. - ns_log::BufferedLogger::logger.setMaxEntryAge(1000000); + ns_log::BufferedLogger::instance().setMaxEntryAge(1000000); // Let each count, count for 5 seconds. - ns_log::BufferedLogger::logger.setCountFactor(5); + ns_log::BufferedLogger::instance().setCountFactor(5); LOGBM(info, "Starting up, using logfile %s", file.c_str()); timer = 100 * 1000000 + 4; @@ -147,9 +147,9 @@ void testThatEntriesExpire( // Test that we don't keep entries longer than max age timer = 10 * 1000000 + 4; // Time out after 120 seconds - ns_log::BufferedLogger::logger.setMaxEntryAge(120); + ns_log::BufferedLogger::instance().setMaxEntryAge(120); // Let counts count much, so they expire due to time instead - ns_log::BufferedLogger::logger.setCountFactor(100000); + ns_log::BufferedLogger::instance().setCountFactor(100000); LOGBM(info, "Starting up, using logfile %s", file.c_str()); timer = 100 * 1000000 + 4; @@ -217,9 +217,9 @@ void testThatHighCountEntriesDontStarveOthers( std::cerr << "testThatHighCountEntriesDontStarveOthers ...\n"; timer = 10 * 1000000 + 4; // Long time out, we don't want to rely on timeout to prevent starvation - ns_log::BufferedLogger::logger.setMaxEntryAge(12000000); + ns_log::BufferedLogger::instance().setMaxEntryAge(12000000); // Let counts count much, so they score high - ns_log::BufferedLogger::logger.setCountFactor(100000); + ns_log::BufferedLogger::instance().setCountFactor(100000); LOGBM(info, "Starting up, using logfile %s", file.c_str()); timer = 100 * 1000000; @@ -372,8 +372,8 @@ void testNonBufferedLoggerTriggersBufferedLogTrim(const std::string& file, void reset(uint64_t& timer) { timer = 0; - ns_log::BufferedLogger::logger.setMaxEntryAge(300); - ns_log::BufferedLogger::logger.setCountFactor(5); + ns_log::BufferedLogger::instance().setMaxEntryAge(300); + ns_log::BufferedLogger::instance().setCountFactor(5); } int @@ -384,10 +384,10 @@ main(int argc, char **argv) return EXIT_FAILURE; } ns_log::Logger::fakePid = true; - ns_log::BufferedLogger::logger.setMaxCacheSize(10); + ns_log::BufferedLogger::instance().setMaxCacheSize(10); uint64_t timer; logger.setTimer(std::unique_ptr<ns_log::Timer>(new ns_log::TestTimer(timer))); - ns_log::BufferedLogger::logger.setTimer(std::unique_ptr<ns_log::Timer>(new ns_log::TestTimer(timer))); + ns_log::BufferedLogger::instance().setTimer(std::unique_ptr<ns_log::Timer>(new ns_log::TestTimer(timer))); reset(timer); testThatEntriesWithHighCountIsKept(argv[1], timer); diff --git a/vespalog/src/vespa/log/bufferedlogger.cpp b/vespalog/src/vespa/log/bufferedlogger.cpp index 607c8f06766..33ff3da7366 100644 --- a/vespalog/src/vespa/log/bufferedlogger.cpp +++ b/vespalog/src/vespa/log/bufferedlogger.cpp @@ -181,8 +181,6 @@ BackingBuffer::Entry::getAgeFactor() const return _timestamp + _countFactor * _count; } -BufferedLogger BufferedLogger::logger; - BackingBuffer::BackingBuffer() : _timer(new Timer), _mutex(), @@ -383,4 +381,11 @@ BufferedLogger::setTimer(std::unique_ptr<Timer> timer) _backing->_timer = std::move(timer); } +BufferedLogger& +BufferedLogger::instance() +{ + static BufferedLogger logger; + return logger; +} + } // ns_log diff --git a/vespalog/src/vespa/log/bufferedlogger.h b/vespalog/src/vespa/log/bufferedlogger.h index d31425921f4..373f81b5160 100644 --- a/vespalog/src/vespa/log/bufferedlogger.h +++ b/vespalog/src/vespa/log/bufferedlogger.h @@ -95,9 +95,9 @@ if (logger.wants(ns_log::Logger::debug)) { \ logger.doLog(ns_log::Logger::level, \ __FILE__, __LINE__, __VA_ARGS__); \ - ns_log::BufferedLogger::logger.trimCache(); \ + ns_log::BufferedLogger::instance().trimCache(); \ } else { \ - ns_log::BufferedLogger::logger.doLog(logger, \ + ns_log::BufferedLogger::instance().doLog(logger, \ ns_log::Logger::level, __FILE__, __LINE__, \ "", __VA_ARGS__); \ } \ @@ -108,15 +108,15 @@ // Define LOGBM macro for logging buffered, using the message itself as a // token. This is the same as LOG defined above if // VESPA_LOG_USELOGBUFFERFORREGULARLOG is defined. -#define LOGBM(level, ...) \ - do { \ +#define LOGBM(level, ...) \ + do { \ if (logger.wants(ns_log::Logger::level)) { \ if (logger.wants(ns_log::Logger::debug)) { \ logger.doLog(ns_log::Logger::level, \ __FILE__, __LINE__, __VA_ARGS__); \ - ns_log::BufferedLogger::logger.trimCache(); \ + ns_log::BufferedLogger::instance().trimCache(); \ } else { \ - ns_log::BufferedLogger::logger.doLog(logger, \ + ns_log::BufferedLogger::instance().doLog(logger, \ ns_log::Logger::level, __FILE__, __LINE__, \ "", __VA_ARGS__); \ } \ @@ -131,11 +131,11 @@ if (logger.wants(ns_log::Logger::debug)) { \ logger.doLog(ns_log::Logger::level, \ __FILE__, __LINE__, ##ARGS); \ - ns_log::BufferedLogger::logger.trimCache(); \ + ns_log::BufferedLogger::instance().trimCache(); \ } else { \ std::ostringstream ost123; \ ost123 << __FILE__ << ":" << __LINE__; \ - ns_log::BufferedLogger::logger.doLog(logger, \ + ns_log::BufferedLogger::instance().doLog(logger, \ ns_log::Logger::level, \ __FILE__, __LINE__, ost123.str(), ##ARGS); \ } \ @@ -149,9 +149,9 @@ if (logger.wants(ns_log::Logger::debug)) { \ logger.doLog(ns_log::Logger::level, \ __FILE__, __LINE__, __VA_ARGS__); \ - ns_log::BufferedLogger::logger.trimCache(); \ + ns_log::BufferedLogger::instance().trimCache(); \ } else { \ - ns_log::BufferedLogger::logger.doLog(logger, \ + ns_log::BufferedLogger::instance().doLog(logger, \ ns_log::Logger::level, \ __FILE__, __LINE__, token, __VA_ARGS__); \ } \ @@ -159,7 +159,7 @@ } while (false) #define LOGB_FLUSH() \ - ns_log::BufferedLogger::logger.flush() + ns_log::BufferedLogger::instance().flush() namespace ns_log { @@ -171,8 +171,6 @@ class BufferedLogger { BufferedLogger & operator = (const BufferedLogger & buf); public: - static BufferedLogger logger; - BufferedLogger(); ~BufferedLogger(); @@ -198,6 +196,8 @@ public: /** Trim the buffer. Removing old messages if wanted. */ void trimCache(); + + static BufferedLogger& instance(); }; } // ns_log diff --git a/vespalog/src/vespa/log/log.cpp b/vespalog/src/vespa/log/log.cpp index a7394b5848b..7f2668a97ce 100644 --- a/vespalog/src/vespa/log/log.cpp +++ b/vespalog/src/vespa/log/log.cpp @@ -239,7 +239,7 @@ Logger::doLog(LogLevel level, const char *file, int line, const char *fmt, ...) actualSize = tryLog(sizeofPayload, level, file, line, fmt, args); va_end(args); } while (sizeofPayload < actualSize); - ns_log::BufferedLogger::logger.trimCache(); + ns_log::BufferedLogger::instance().trimCache(); } void Logger::doLogCore(uint64_t timestamp, LogLevel level, |