mirror of
https://github.com/gabime/spdlog.git
synced 2024-12-24 09:31:34 +08:00
Small changes
This commit is contained in:
parent
2a6ff3b613
commit
ae2426e0be
@ -84,7 +84,7 @@
|
||||
<Text Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\include\c11log\common_types.h" />
|
||||
<ClInclude Include="..\..\include\c11log\common.h" />
|
||||
<ClInclude Include="..\..\include\c11log\details\blocking_queue.h" />
|
||||
<ClInclude Include="..\..\include\c11log\details\factory.h" />
|
||||
<ClInclude Include="..\..\include\c11log\details\fast_oss.h" />
|
||||
|
@ -33,9 +33,6 @@
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\c11log\common_types.h">
|
||||
<Filter>Header Files\c11log</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\c11log\formatter.h">
|
||||
<Filter>Header Files\c11log</Filter>
|
||||
</ClInclude>
|
||||
@ -90,6 +87,9 @@
|
||||
<ClInclude Include="..\..\include\c11log\sinks\stdout_sinks.h">
|
||||
<Filter>Header Files\c11log\sinks</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\c11log\common.h">
|
||||
<Filter>Header Files\c11log</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
|
@ -20,14 +20,14 @@ int main(int argc, char* argv[])
|
||||
|
||||
const unsigned int howmany = argc <= 1 ? 10000 : atoi(argv[1]);
|
||||
|
||||
logger cout_logger("example", std::make_shared<sinks::stderr_sink_st>());
|
||||
logger cout_logger("example", std::make_shared<sinks::stderr_sink_mt>());
|
||||
cout_logger.info() << "Hello logger";
|
||||
|
||||
//auto nullsink = std::make_shared<sinks::null_sink<std::mutex>>();
|
||||
//auto nullsink = std::make_shared<sinks::null_sink<details::null_mutex>>();
|
||||
auto fsink = std::make_shared<sinks::rotating_file_sink_mt>("log", "txt", 1024*1024*50 , 5, 1);
|
||||
//auto as = std::make_shared<sinks::async_sink>(1000);
|
||||
//as->add_sink(fsink);
|
||||
auto nullsink = std::make_shared<sinks::null_sink<details::null_mutex>>();
|
||||
auto fsink = std::make_shared<sinks::rotating_file_sink_st>("log", "txt", 1024*1024*50 , 5, 10);
|
||||
auto as = std::make_shared<sinks::async_sink>(1000);
|
||||
|
||||
|
||||
logger my_logger("my_logger", fsink);
|
||||
|
||||
@ -36,7 +36,7 @@ int main(int argc, char* argv[])
|
||||
for (unsigned int i = 1; i <= howmany; ++i)
|
||||
my_logger.info() << "Hello logger: msg #" << i;
|
||||
|
||||
//as->shutdown(std::chrono::milliseconds(15000));
|
||||
|
||||
auto delta = system_clock::now() - start;
|
||||
auto delta_d = duration_cast<duration<double>> (delta).count();
|
||||
|
||||
|
@ -1,30 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
|
||||
namespace c11log
|
||||
{
|
||||
|
||||
typedef std::chrono::system_clock log_clock;
|
||||
|
||||
namespace level
|
||||
{
|
||||
typedef enum
|
||||
{
|
||||
TRACE,
|
||||
DEBUG,
|
||||
INFO,
|
||||
WARNING,
|
||||
ERROR,
|
||||
CRITICAL,
|
||||
FATAL,
|
||||
NONE = 99
|
||||
} level_enum;
|
||||
|
||||
static const char* level_names[] { "trace", "debug", "info", "warning", "error", "critical", "fatal" };
|
||||
inline const char* to_str(c11log::level::level_enum l)
|
||||
{
|
||||
return level_names[l];
|
||||
}
|
||||
} //level
|
||||
} //c11log
|
@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <sstream>
|
||||
#include "../common_types.h"
|
||||
#include "../common.h"
|
||||
#include "../logger.h"
|
||||
#include "fast_oss.h"
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../common_types.h"
|
||||
#include <chrono>
|
||||
#include "../common.h"
|
||||
|
||||
namespace c11log
|
||||
{
|
||||
@ -16,7 +17,6 @@ struct log_msg
|
||||
raw(),
|
||||
formatted() {}
|
||||
|
||||
|
||||
log_msg(const log_msg& other):
|
||||
logger_name(other.logger_name),
|
||||
level(other.level),
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <cstring>
|
||||
#include <sstream>
|
||||
|
||||
#include "common_types.h"
|
||||
#include "common.h"
|
||||
#include "details/os.h"
|
||||
#include "details/log_msg.h"
|
||||
#include "details/fast_oss.h"
|
||||
|
@ -8,8 +8,7 @@
|
||||
#include <sstream>
|
||||
|
||||
#include "sinks/base_sink.h"
|
||||
#include "common_types.h"
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "base_sink.h"
|
||||
#include "../logger.h"
|
||||
#include "../details/blocking_queue.h"
|
||||
#include "../details/null_mutex.h"
|
||||
#include "../details/log_msg.h"
|
||||
|
||||
#include<iostream>
|
||||
@ -17,8 +18,7 @@ namespace c11log
|
||||
namespace sinks
|
||||
{
|
||||
|
||||
template<class Mutex>
|
||||
class async_sink : public base_sink<Mutex>
|
||||
class async_sink : public base_sink<details::null_mutex>
|
||||
{
|
||||
public:
|
||||
using q_type = details::blocking_queue<details::log_msg>;
|
||||
@ -26,7 +26,6 @@ public:
|
||||
explicit async_sink(const q_type::size_type max_queue_size);
|
||||
|
||||
//Stop logging and join the back thread
|
||||
// TODO: limit with timeout of the join and kill it afterwards?
|
||||
~async_sink();
|
||||
void add_sink(logger::sink_ptr sink);
|
||||
void remove_sink(logger::sink_ptr sink_ptr);
|
||||
@ -46,7 +45,7 @@ private:
|
||||
std::thread _back_thread;
|
||||
//Clear all remaining messages(if any), stop the _back_thread and join it
|
||||
void _shutdown();
|
||||
std::mutex _shutdown_mutex;
|
||||
std::mutex _mutex;
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -54,30 +53,26 @@ private:
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// async_sink class implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
template<class Mutex>
|
||||
inline c11log::sinks::async_sink<Mutex>::async_sink(const q_type::size_type max_queue_size)
|
||||
inline c11log::sinks::async_sink::async_sink(const q_type::size_type max_queue_size)
|
||||
:_sinks(),
|
||||
_active(true),
|
||||
_q(max_queue_size),
|
||||
_back_thread(&async_sink::_thread_loop, this)
|
||||
{}
|
||||
|
||||
template<class Mutex>
|
||||
inline c11log::sinks::async_sink<Mutex>::~async_sink()
|
||||
inline c11log::sinks::async_sink::~async_sink()
|
||||
{
|
||||
_shutdown();
|
||||
}
|
||||
|
||||
template<class Mutex>
|
||||
inline void c11log::sinks::async_sink<Mutex>::_sink_it(const details::log_msg& msg)
|
||||
inline void c11log::sinks::async_sink::_sink_it(const details::log_msg& msg)
|
||||
{
|
||||
if(!_active || msg.formatted.empty())
|
||||
return;
|
||||
_q.push(msg);
|
||||
}
|
||||
|
||||
template<class Mutex>
|
||||
inline void c11log::sinks::async_sink<Mutex>::_thread_loop()
|
||||
inline void c11log::sinks::async_sink::_thread_loop()
|
||||
{
|
||||
static std::chrono::seconds pop_timeout { 1 };
|
||||
while (_active)
|
||||
@ -95,27 +90,27 @@ inline void c11log::sinks::async_sink<Mutex>::_thread_loop()
|
||||
}
|
||||
}
|
||||
|
||||
template<class Mutex>
|
||||
inline void c11log::sinks::async_sink<Mutex>::add_sink(logger::sink_ptr sink)
|
||||
inline void c11log::sinks::async_sink::add_sink(logger::sink_ptr sink)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(_mutex);
|
||||
_sinks.push_back(sink);
|
||||
}
|
||||
|
||||
template<class Mutex>
|
||||
inline void c11log::sinks::async_sink<Mutex>::remove_sink(logger::sink_ptr sink)
|
||||
|
||||
inline void c11log::sinks::async_sink::remove_sink(logger::sink_ptr sink)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(_mutex);
|
||||
_sinks.erase(std::remove(_sinks.begin(), _sinks.end(), sink), _sinks.end());
|
||||
}
|
||||
/*
|
||||
template<class Mutex>
|
||||
inline c11log::sinks::async_sink::q_type& c11log::sinks::async_sink<Mutex>::q()
|
||||
|
||||
|
||||
inline c11log::sinks::async_sink::q_type& c11log::sinks::async_sink::q()
|
||||
{
|
||||
return _q;
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
template<class Mutex>
|
||||
inline void c11log::sinks::async_sink<Mutex>::shutdown(const std::chrono::milliseconds& timeout)
|
||||
inline void c11log::sinks::async_sink::shutdown(const std::chrono::milliseconds& timeout)
|
||||
{
|
||||
if(timeout > std::chrono::milliseconds::zero())
|
||||
{
|
||||
@ -129,10 +124,9 @@ inline void c11log::sinks::async_sink<Mutex>::shutdown(const std::chrono::millis
|
||||
}
|
||||
|
||||
|
||||
template<class Mutex>
|
||||
inline void c11log::sinks::async_sink<Mutex>::_shutdown()
|
||||
inline void c11log::sinks::async_sink::_shutdown()
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(_shutdown_mutex);
|
||||
std::lock_guard<std::mutex> guard(_mutex);
|
||||
if(_active)
|
||||
{
|
||||
_active = false;
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include<atomic>
|
||||
#include "isink.h"
|
||||
#include "../formatter.h"
|
||||
#include "../common_types.h"
|
||||
#include "../common.h"
|
||||
#include "../details/log_msg.h"
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ public:
|
||||
base_sink(const base_sink&) = delete;
|
||||
base_sink& operator=(const base_sink&) = delete;
|
||||
|
||||
void log(const details::log_msg& msg)
|
||||
void log(const details::log_msg& msg) override
|
||||
{
|
||||
if (_enabled)
|
||||
{
|
||||
@ -32,12 +32,12 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
void enable(bool enabled)
|
||||
void enable(bool enabled) override
|
||||
{
|
||||
_enabled = enabled;
|
||||
}
|
||||
|
||||
bool is_enabled()
|
||||
bool is_enabled() override
|
||||
{
|
||||
return _enabled.load();
|
||||
}
|
||||
@ -48,8 +48,5 @@ protected:
|
||||
std::atomic<bool> _enabled;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -87,12 +87,10 @@ private:
|
||||
}
|
||||
|
||||
|
||||
// Rotate old files:
|
||||
// Rotate files:
|
||||
// log.txt -> log.1.txt
|
||||
// log.n-1.txt -> log.n.txt
|
||||
// log.n-2.txt -> log.n-1.txt
|
||||
// log.n-3.txt ->..
|
||||
// log.n.txt -> log.txt
|
||||
// ..
|
||||
// log.n.txt -> log.n+1.txt
|
||||
|
||||
|
||||
void _rotate()
|
||||
|
@ -26,7 +26,6 @@ protected:
|
||||
{
|
||||
_ostream << msg.formatted;
|
||||
}
|
||||
|
||||
std::ostream& _ostream;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user