Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
spdlog
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
spdlog
Commits
20cb73e9
Commit
20cb73e9
authored
Aug 22, 2016
by
gabime
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
disable syslog by default (enable by #define SPDLOG_ENABLE_SYSLOG )
parent
c68a0de2
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
172 additions
and
168 deletions
+172
-168
example/example.cpp
example/example.cpp
+1
-0
include/spdlog/common.h
include/spdlog/common.h
+143
-153
include/spdlog/details/mpmc_bounded_q.h
include/spdlog/details/mpmc_bounded_q.h
+16
-3
include/spdlog/details/os.h
include/spdlog/details/os.h
+3
-4
include/spdlog/tweakme.h
include/spdlog/tweakme.h
+9
-8
No files found.
example/example.cpp
View file @
20cb73e9
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
//
//
// spdlog usage example
// spdlog usage example
//
//
//
#include "spdlog/spdlog.h"
#include "spdlog/spdlog.h"
#include <iostream>
#include <iostream>
...
...
include/spdlog/common.h
View file @
20cb73e9
//
//
// Copyright(c) 2015 Gabi Melman.
// Copyright(c) 2015 Gabi Melman.
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
//
//
#pragma once
#pragma once
#include <string>
#include <string>
#include <initializer_list>
#include <initializer_list>
#include <chrono>
#include <chrono>
#include <memory>
#include <memory>
#include <atomic>
#include <atomic>
#include <exception>
#include <exception>
#include<functional>
#include<functional>
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
#include <codecvt>
#include <codecvt>
#include <locale>
#include <locale>
#endif
#endif
#include <spdlog/details/null_mutex.h>
#include <spdlog/details/null_mutex.h>
//visual studio upto 2013 does not support noexcept nor constexpr
//visual studio upto 2013 does not support noexcept nor constexpr
#if defined(_MSC_VER) && (_MSC_VER < 1900)
#if defined(_MSC_VER) && (_MSC_VER < 1900)
#define SPDLOG_NOEXCEPT throw()
#define SPDLOG_NOEXCEPT throw()
#define SPDLOG_CONSTEXPR
#define SPDLOG_CONSTEXPR
#else
#else
#define SPDLOG_NOEXCEPT noexcept
#define SPDLOG_NOEXCEPT noexcept
#define SPDLOG_CONSTEXPR constexpr
#define SPDLOG_CONSTEXPR constexpr
#endif
#endif
#if defined(__GNUC__) || defined(__clang__)
#if defined(__GNUC__) || defined(__clang__)
#define DEPRECATED __attribute__((deprecated))
#define DEPRECATED __attribute__((deprecated))
#elif defined(_MSC_VER)
#elif defined(_MSC_VER)
#define DEPRECATED __declspec(deprecated)
#define DEPRECATED __declspec(deprecated)
#else
#else
#define DEPRECATED
#define DEPRECATED
#endif
#endif
#include <spdlog/tweakme.h>
#include <spdlog/fmt/fmt.h>
#ifndef SPDLOG_ENABLE_SYSLOG
#if defined (__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
namespace
spdlog
#define SPDLOG_ENABLE_SYSLOG
{
#elif defined(sun) || defined(__sun)
#define SPDLOG_ENABLE_SYSLOG
class
formatter
;
#endif
#endif
namespace
sinks
{
class
sink
;
#include <spdlog/fmt/fmt.h>
}
namespace
spdlog
using
log_clock
=
std
::
chrono
::
system_clock
;
{
using
sink_ptr
=
std
::
shared_ptr
<
sinks
::
sink
>
;
using
sinks_init_list
=
std
::
initializer_list
<
sink_ptr
>
;
class
formatter
;
using
formatter_ptr
=
std
::
shared_ptr
<
spdlog
::
formatter
>
;
#if defined(SPDLOG_NO_ATOMIC_LEVELS)
namespace
sinks
using
level_t
=
details
::
null_atomic_int
;
{
#else
class
sink
;
using
level_t
=
std
::
atomic_int
;
}
#endif
using
log_clock
=
std
::
chrono
::
system_clock
;
using
log_err_handler
=
std
::
function
<
void
(
const
std
::
string
&
err_msg
)
>
;
using
sink_ptr
=
std
::
shared_ptr
<
sinks
::
sink
>
;
using
sinks_init_list
=
std
::
initializer_list
<
sink_ptr
>
;
//Log level enum
using
formatter_ptr
=
std
::
shared_ptr
<
spdlog
::
formatter
>
;
namespace
level
#if defined(SPDLOG_NO_ATOMIC_LEVELS)
{
using
level_t
=
details
::
null_atomic_int
;
typedef
enum
#else
{
using
level_t
=
std
::
atomic_int
;
trace
=
0
,
#endif
debug
=
1
,
info
=
2
,
using
log_err_handler
=
std
::
function
<
void
(
const
std
::
string
&
err_msg
)
>
;
warn
=
3
,
err
=
4
,
//Log level enum
critical
=
5
,
namespace
level
off
=
6
{
}
level_enum
;
typedef
enum
{
static
const
char
*
level_names
[]{
"trace"
,
"debug"
,
"info"
,
"warning"
,
"error"
,
"critical"
,
"off"
};
trace
=
0
,
debug
=
1
,
static
const
char
*
short_level_names
[]{
"T"
,
"D"
,
"I"
,
"W"
,
"E"
,
"C"
,
"O"
};
info
=
2
,
warn
=
3
,
inline
const
char
*
to_str
(
spdlog
::
level
::
level_enum
l
)
err
=
4
,
{
critical
=
5
,
return
level_names
[
l
];
off
=
6
}
}
level_enum
;
inline
const
char
*
to_short_str
(
spdlog
::
level
::
level_enum
l
)
static
const
char
*
level_names
[]
{
"trace"
,
"debug"
,
"info"
,
"warning"
,
"error"
,
"critical"
,
"off"
};
{
return
short_level_names
[
l
];
static
const
char
*
short_level_names
[]
{
"T"
,
"D"
,
"I"
,
"W"
,
"E"
,
"C"
,
"O"
};
}
}
//level
inline
const
char
*
to_str
(
spdlog
::
level
::
level_enum
l
)
{
return
level_names
[
l
];
//
}
// Async overflow policy - block by default.
//
inline
const
char
*
to_short_str
(
spdlog
::
level
::
level_enum
l
)
enum
class
async_overflow_policy
{
{
return
short_level_names
[
l
];
block_retry
,
// Block / yield / sleep until message can be enqueued
}
discard_log_msg
// Discard the message it enqueue fails
}
//level
};
//
//
// Async overflow policy - block by default.
// Log exception
//
//
enum
class
async_overflow_policy
namespace
details
{
{
block_retry
,
// Block / yield / sleep until message can be enqueued
namespace
os
discard_log_msg
// Discard the message it enqueue fails
{
};
std
::
string
errno_str
(
int
err_num
);
}
}
//
class
spdlog_ex
:
public
std
::
exception
// Log exception
{
//
public:
namespace
details
spdlog_ex
(
const
std
::
string
&
msg
)
:
_msg
(
msg
)
{
{}
namespace
os
spdlog_ex
(
const
std
::
string
&
msg
,
int
last_errno
)
{
{
std
::
string
errno_str
(
int
err_num
);
_msg
=
msg
+
": "
+
details
::
os
::
errno_str
(
last_errno
);
}
}
}
const
char
*
what
()
const
SPDLOG_NOEXCEPT
override
class
spdlog_ex
:
public
std
::
exception
{
{
return
_msg
.
c_str
();
public:
}
spdlog_ex
(
const
std
::
string
&
msg
)
:
_msg
(
msg
)
private:
{}
std
::
string
_msg
;
spdlog_ex
(
const
std
::
string
&
msg
,
int
last_errno
)
{
};
_msg
=
msg
+
": "
+
details
::
os
::
errno_str
(
last_errno
);
}
//
const
char
*
what
()
const
SPDLOG_NOEXCEPT
override
// wchar support for windows file names (SPDLOG_WCHAR_FILENAMES must be defined)
{
//
return
_msg
.
c_str
();
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
}
using
filename_t
=
std
::
wstring
;
private:
#else
std
::
string
_msg
;
using
filename_t
=
std
::
string
;
#endif
};
//
}
//spdlog
// wchar support for windows file names (SPDLOG_WCHAR_FILENAMES must be defined)
//
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
using
filename_t
=
std
::
wstring
;
#else
using
filename_t
=
std
::
string
;
#endif
}
//spdlog
include/spdlog/details/mpmc_bounded_q.h
View file @
20cb73e9
...
@@ -60,7 +60,8 @@ public:
...
@@ -60,7 +60,8 @@ public:
using
item_type
=
T
;
using
item_type
=
T
;
mpmc_bounded_queue
(
size_t
buffer_size
)
mpmc_bounded_queue
(
size_t
buffer_size
)
:
buffer_
(
new
cell_t
[
buffer_size
]),
:
max_size_
(
buffer_size
),
buffer_
(
new
cell_t
[
buffer_size
]),
buffer_mask_
(
buffer_size
-
1
)
buffer_mask_
(
buffer_size
-
1
)
{
{
//queue size must be power of two
//queue size must be power of two
...
@@ -132,6 +133,16 @@ public:
...
@@ -132,6 +133,16 @@ public:
return
true
;
return
true
;
}
}
size_t
approx_size
()
{
size_t
first_pos
=
dequeue_pos_
.
load
(
std
::
memory_order_relaxed
);
size_t
last_pos
=
enqueue_pos_
.
load
(
std
::
memory_order_relaxed
);
if
(
last_pos
<=
first_pos
)
return
0
;
auto
size
=
last_pos
-
first_pos
;
return
size
<
max_size_
?
size
:
max_size_
;
}
private:
private:
struct
cell_t
struct
cell_t
{
{
...
@@ -139,6 +150,8 @@ private:
...
@@ -139,6 +150,8 @@ private:
T
data_
;
T
data_
;
};
};
size_t
const
max_size_
;
static
size_t
const
cacheline_size
=
64
;
static
size_t
const
cacheline_size
=
64
;
typedef
char
cacheline_pad_t
[
cacheline_size
];
typedef
char
cacheline_pad_t
[
cacheline_size
];
...
@@ -151,8 +164,8 @@ private:
...
@@ -151,8 +164,8 @@ private:
std
::
atomic
<
size_t
>
dequeue_pos_
;
std
::
atomic
<
size_t
>
dequeue_pos_
;
cacheline_pad_t
pad3_
;
cacheline_pad_t
pad3_
;
mpmc_bounded_queue
(
mpmc_bounded_queue
const
&
);
mpmc_bounded_queue
(
mpmc_bounded_queue
const
&
)
=
delete
;
void
operator
=
(
mpmc_bounded_queue
const
&
);
void
operator
=
(
mpmc_bounded_queue
const
&
)
=
delete
;
};
};
}
// ns details
}
// ns details
...
...
include/spdlog/details/os.h
View file @
20cb73e9
...
@@ -250,8 +250,7 @@ inline int utc_minutes_offset(const std::tm& tm = details::os::localtime())
...
@@ -250,8 +250,7 @@ inline int utc_minutes_offset(const std::tm& tm = details::os::localtime())
offset
-=
tzinfo
.
StandardBias
;
offset
-=
tzinfo
.
StandardBias
;
return
offset
;
return
offset
;
#else
#else
long
int
offset_seconds
;
#if defined(sun) || defined(__sun)
#if defined(sun) || defined(__sun)
// 'tm_gmtoff' field is BSD extension and it's missing on SunOS/Solaris
// 'tm_gmtoff' field is BSD extension and it's missing on SunOS/Solaris
struct
helper
{
struct
helper
{
...
@@ -280,9 +279,9 @@ inline int utc_minutes_offset(const std::tm& tm = details::os::localtime())
...
@@ -280,9 +279,9 @@ inline int utc_minutes_offset(const std::tm& tm = details::os::localtime())
}
}
};
};
offset_seconds
=
helper
::
calculate_gmt_offset
(
tm
);
long
int
offset_seconds
=
helper
::
calculate_gmt_offset
(
tm
);
#else
#else
offset_seconds
=
tm
.
tm_gmtoff
;
long
int
offset_seconds
=
tm
.
tm_gmtoff
;
#endif
#endif
return
static_cast
<
int
>
(
offset_seconds
/
60
);
return
static_cast
<
int
>
(
offset_seconds
/
60
);
...
...
include/spdlog/tweakme.h
View file @
20cb73e9
...
@@ -11,13 +11,6 @@
...
@@ -11,13 +11,6 @@
//
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// By default, syslog sink is only enabled on tested operating systems.
// Uncomment to enable it unconditionally.
//
// #define SPDLOG_ENABLE_SYSLOG
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Under Linux, the much faster CLOCK_REALTIME_COARSE clock can be used.
// Under Linux, the much faster CLOCK_REALTIME_COARSE clock can be used.
...
@@ -56,7 +49,6 @@
...
@@ -56,7 +49,6 @@
// #define SPDLOG_NO_NAME
// #define SPDLOG_NO_NAME
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Uncomment to enable the SPDLOG_DEBUG/SPDLOG_TRACE macros.
// Uncomment to enable the SPDLOG_DEBUG/SPDLOG_TRACE macros.
//
//
...
@@ -100,3 +92,12 @@
...
@@ -100,3 +92,12 @@
//
//
// #define SPDLOG_FMT_EXTERNAL
// #define SPDLOG_FMT_EXTERNAL
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Uncomment to enable syslog (disabled by default)
//
// #define SPDLOG_ENABLE_SYSLOG
///////////////////////////////////////////////////////////////////////////////
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment