Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add RollingDateFileAppender.h #206

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d900a3e
add RollingDateFileAppender.h
kekxv Feb 26, 2022
2954b33
add RollingDateFileAppender.h
kekxv Feb 26, 2022
38d8b1b
fix RollingDateFileAppender.h
kekxv Feb 28, 2022
279fd84
replace nullptr to NULL
kekxv Mar 1, 2022
3216c0b
fix
kekxv Mar 1, 2022
baec6f3
restore code format
kekxv Mar 1, 2022
fdf6e11
fix localtime
kekxv Mar 1, 2022
00d977d
fix #include <plog/Formatters/TxtFormatter.h>
kekxv Mar 1, 2022
cbb7a56
fix include
kekxv Mar 1, 2022
61e577c
fix setFileName
kekxv Mar 8, 2022
d4185ae
add PLOG_DISABLE_WCHAR_T option
kekxv Mar 10, 2022
f12131a
fix RollingDateFileAppender.h
kekxv Mar 10, 2022
61cf40f
fix m_firstWrite
kekxv Mar 10, 2022
d341b82
fix setFileName
kekxv Mar 11, 2022
f15fd26
fix maxFiles
kekxv Mar 16, 2022
75dc240
Merge branch 'SergiusTheBest:master' into master
kekxv Oct 30, 2022
1eca5cf
Merge branch 'master' into develop
kekxv Oct 30, 2022
58e7878
Merge pull request #1 from SergiusTheBest/master
kekxv Dec 19, 2022
767d94d
update RollingDateFileAppender.h
kekxv Dec 19, 2022
6297d67
update RollingDateFileAppender.h
kekxv Dec 19, 2022
e139792
fix RollingDateFileAppender.h include
kekxv Dec 19, 2022
e7de6a8
fix PLOG_LINKAGE_HIDDEN
kekxv Dec 19, 2022
03cbf0a
rollback PLOG_OVERRIDE
kekxv Dec 19, 2022
38f1f11
rollback PLOG_LINKAGE_HIDDEN
kekxv Dec 19, 2022
1d1f755
Merge branch 'master' into develop
kekxv Dec 19, 2022
0c6683b
update 1.1.9
kekxv Dec 19, 2022
5fbc4b8
add #include <ctime>
kekxv Dec 19, 2022
d8a48f0
fix PLOG_LINKAGE_HIDDEN
kekxv Dec 19, 2022
58c21cb
try fix windows wstat
kekxv Dec 19, 2022
af8c279
try fix windows wstat 2
kekxv Dec 19, 2022
fea0823
try fix windows wstat 3
kekxv Dec 19, 2022
fd28e81
try fix windows wstat 4
kekxv Dec 19, 2022
c161a8f
try fix windows ci
kekxv Dec 19, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@ endif()

# options
option(PLOG_BUILD_SAMPLES "Build ${PROJECT_NAME} samples" ${IS_TOPLEVEL_PROJECT})
option(PLOG_DISABLE_WCHAR_T "disable wchar_t ." OFF)
option(PLOG_INSTALL "Generate ${PROJECT_NAME} install target" ${IS_TOPLEVEL_PROJECT})

if(PLOG_DISABLE_WCHAR_T)
add_definitions(-DPLOG_DISABLE_WCHAR_T)
endif()
# make sure install paths work on all platforms
include(GNUInstallDirs)

Expand Down
2 changes: 1 addition & 1 deletion include/plog/Appenders/ConsoleAppender.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ namespace plog
protected:
void writestr(const util::nstring& str)
{
#ifdef _WIN32
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
if (m_isatty)
{
WriteConsoleW(m_outputHandle, str.c_str(), static_cast<DWORD>(str.size()), NULL, NULL);
Expand Down
7 changes: 7 additions & 0 deletions include/plog/Appenders/DebugOutputAppender.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,14 @@ namespace plog
public:
virtual void write(const Record& record) PLOG_OVERRIDE
{
#if defined(PLOG_DISABLE_WCHAR_T)
std::wostringstream _str ;
_str << Formatter::format(record).c_str();
std::wstring str = _str.str();
OutputDebugStringW(str.c_str());
#else
OutputDebugStringW(Formatter::format(record).c_str());
#endif
}
};
}
6 changes: 6 additions & 0 deletions include/plog/Appenders/EventLogAppender.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ namespace plog

virtual void write(const Record& record) PLOG_OVERRIDE
{
#if defined(PLOG_DISABLE_WCHAR_T)
std::wostringstream _str ;
_str << Formatter::format(record).c_str();
std::wstring str = _str.str();
#else
std::wstring str = Formatter::format(record);
#endif
const wchar_t* logMessagePtr[] = { str.c_str() };

ReportEventW(m_eventSource, logSeverityToType(record.getSeverity()), static_cast<WORD>(record.getSeverity()), 0, NULL, 1, 0, logMessagePtr, NULL);
Expand Down
102 changes: 102 additions & 0 deletions include/plog/Appenders/RollingDateFileAppender.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
//
// Created by caesar kekxv on 2022/2/26.
//

#ifndef TERMINALSERVICE_ROLLINGDATEFILEAPPENDER_H
#define TERMINALSERVICE_ROLLINGDATEFILEAPPENDER_H

#include <plog/Appenders/RollingFileAppender.h>

#ifdef _WIN32
#include <windows.h>
#endif
namespace plog {

template<class Formatter, class Converter = NativeEOLConverter <UTF8Converter> >
class PLOG_LINKAGE_HIDDEN RollingDateFileAppender : public RollingFileAppender<Formatter, Converter> {
private:
time_t last_date;
size_t m_fileSize;
util::nstring m_fileName;

public:
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
/**
*
* @param fileName "%Y-%m-%d-%H-%M-%S"
* @param maxFileSize
* @param maxFiles
*/
inline explicit RollingDateFileAppender(const char* fileName,int maxFiles = 0)
: RollingFileAppender<Formatter, Converter>(
util::get_file_name(fileName).c_str())
{
m_fileSize = maxFiles;
m_fileName = util::toWide(fileName).c_str();
last_date = util::get_zero_time();
}
#endif

inline void setFileName(const util::nchar *fileName) {
m_fileName = fileName;
RollingFileAppender<Formatter, Converter>::setFileName(util::get_file_name(fileName).c_str());
if (!(util::exists(util::get_file_name(fileName).c_str()))) {
RollingFileAppender<Formatter, Converter>::rollLogFiles();
}
}

#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
void setFileName(const char* fileName)
{
setFileName(util::toWide(fileName).c_str());
}
#endif


/**
*
* @param fileName "%Y-%m-%d-%H-%M-%S"
* @param maxFileSize
* @param maxFiles
*/
inline explicit RollingDateFileAppender(const util::nchar *fileName, size_t maxFiles = 0)
: RollingFileAppender<Formatter, Converter>(
util::get_file_name(fileName).c_str()) {
m_fileSize = maxFiles;
m_fileName = fileName;
last_date = 0;
}

inline void setMaxFiles(size_t maxFiles) {
m_fileSize = maxFiles;
}

inline void write(const Record &record) PLOG_OVERRIDE {
if (record.getTime().time >= last_date) {
std::string path = util::get_file_name(m_fileName.c_str());
RollingFileAppender<Formatter, Converter>::setFileName(path.c_str());
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
if (path != util::toNarrow(m_fileName.c_str(),CP_UTF8) && m_fileSize > 0) {
#else
if (path != m_fileName && m_fileSize > 0) {
#endif
int size = (int) m_fileSize;
std::string lastFileName = util::get_file_name(m_fileName.c_str(), -size);
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
util::File::unlink(util::toWide(lastFileName.c_str()).c_str());
#else
util::File::unlink(lastFileName.c_str());
#endif
}
if (!(util::exists(path.c_str()))) {
RollingFileAppender<Formatter, Converter>::rollLogFiles();
}
last_date = util::get_zero_time();
}
RollingFileAppender<Formatter, Converter>::write(record);
}
};
}


#endif //TERMINALSERVICE_ROLLINGDATEFILEAPPENDER_H
12 changes: 6 additions & 6 deletions include/plog/Appenders/RollingFileAppender.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ namespace plog
{
public:
RollingFileAppender(const util::nchar* fileName, size_t maxFileSize = 0, int maxFiles = 0)
: m_fileSize()
, m_maxFileSize()
, m_maxFiles(maxFiles)
, m_firstWrite(true)
: m_fileSize()
, m_maxFileSize()
, m_maxFiles(maxFiles)
, m_firstWrite(true)
{
setFileName(fileName);
setMaxFileSize(maxFileSize);
}

#ifdef _WIN32
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
RollingFileAppender(const char* fileName, size_t maxFileSize = 0, int maxFiles = 0)
: m_fileSize()
, m_maxFileSize()
Expand Down Expand Up @@ -65,7 +65,7 @@ namespace plog
m_firstWrite = true;
}

#ifdef _WIN32
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
void setFileName(const char* fileName)
{
setFileName(util::toWide(fileName).c_str());
Expand Down
12 changes: 6 additions & 6 deletions include/plog/Converters/NativeEOLConverter.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace plog
class NativeEOLConverter : public NextConverter
{
#ifdef _WIN32
public:
public:
static std::string header(const util::nstring& str)
{
return NextConverter::header(fixLineEndings(str));
Expand All @@ -20,18 +20,18 @@ namespace plog
}

private:
static std::wstring fixLineEndings(const std::wstring& str)
static util::nstring fixLineEndings(const util::nstring& str)
{
std::wstring output;
util::nstring output;
output.reserve(str.length() * 2);

for (size_t i = 0; i < str.size(); ++i)
{
wchar_t ch = str[i];
util::nchar ch = str[i];

if (ch == L'\n')
if (ch == PLOG_NSTR('\n'))
{
output.push_back(L'\r');
output.push_back(PLOG_NSTR('\r'));
}

output.push_back(ch);
Expand Down
2 changes: 1 addition & 1 deletion include/plog/Converters/UTF8Converter.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace plog
return std::string(kBOM) + convert(str);
}

#ifdef _WIN32
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
static std::string convert(const util::nstring& str)
{
return util::toNarrow(str, codePage::kUTF8);
Expand Down
10 changes: 4 additions & 6 deletions include/plog/Init.h
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
#pragma once

#include <plog/Logger.h>

namespace plog
{
namespace plog {
template<int instanceId>
PLOG_LINKAGE_HIDDEN inline Logger<instanceId>& init(Severity maxSeverity = none, IAppender* appender = NULL)
{
PLOG_LINKAGE_HIDDEN inline Logger <instanceId> &init(Severity maxSeverity = none, IAppender *appender = NULL) {
static Logger<instanceId> logger(maxSeverity);
return appender ? logger.addAppender(appender) : logger;
}

inline Logger<PLOG_DEFAULT_INSTANCE_ID>& init(Severity maxSeverity = none, IAppender* appender = NULL)
{
inline Logger<PLOG_DEFAULT_INSTANCE_ID> &init(Severity maxSeverity = none, IAppender *appender = NULL) {
return init<PLOG_DEFAULT_INSTANCE_ID>(maxSeverity, appender);
}
}
12 changes: 6 additions & 6 deletions include/plog/Record.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ namespace plog
//////////////////////////////////////////////////////////////////////////
// Stream output operators as free functions

#if PLOG_ENABLE_WCHAR_INPUT
#if !defined(PLOG_DISABLE_WCHAR_T) && PLOG_ENABLE_WCHAR_INPUT
inline void operator<<(util::nostringstream& stream, const wchar_t* data)
{
data = data ? data : L"(null)";
Expand All @@ -113,9 +113,9 @@ namespace plog
{
data = data ? data : "(null)";

#if defined(_WIN32) && defined(__BORLANDC__)
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32) && defined(__BORLANDC__)
stream << util::toWide(data);
#elif defined(_WIN32)
#elif !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
std::operator<<(stream, util::toWide(data));
#else
std::operator<<(stream, data);
Expand Down Expand Up @@ -246,15 +246,15 @@ namespace plog
return *this << str;
}

#if PLOG_ENABLE_WCHAR_INPUT
#if !defined(PLOG_DISABLE_WCHAR_T) && PLOG_ENABLE_WCHAR_INPUT
Record& operator<<(wchar_t data)
{
wchar_t str[] = { data, 0 };
return *this << str;
}
#endif

#ifdef _WIN32
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
Record& operator<<(std::wostream& (PLOG_CDECL *data)(std::wostream&))
#else
Record& operator<<(std::ostream& (*data)(std::ostream&))
Expand Down Expand Up @@ -317,7 +317,7 @@ namespace plog
return *this;
}

#ifdef _WIN32
#if !defined(PLOG_DISABLE_WCHAR_T) && defined(_WIN32)
Record& printf(const wchar_t* format, ...)
{
using namespace util;
Expand Down
Loading