aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Logging/AppenderFile.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-08-16 00:12:18 +0200
committerDDuarte <dnpd.dd@gmail.com>2015-08-16 00:09:02 +0100
commitcdbd563157f18423111ddb95ff4132f315d274dc (patch)
tree0c672419147468baa1e0cde58e2d6d5ce32f03fe /src/server/shared/Logging/AppenderFile.cpp
parentc1e3fdc826dcd7071a48aca2708012058af52f31 (diff)
Core/Logging: Refactored appender creation to allow using logging without mysql dependency in tools (future task)
Conflicts: src/server/bnetserver/Main.cpp src/server/worldserver/Main.cpp
Diffstat (limited to 'src/server/shared/Logging/AppenderFile.cpp')
-rw-r--r--src/server/shared/Logging/AppenderFile.cpp33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/server/shared/Logging/AppenderFile.cpp b/src/server/shared/Logging/AppenderFile.cpp
index c9cc1935c7a..d33818626fe 100644
--- a/src/server/shared/Logging/AppenderFile.cpp
+++ b/src/server/shared/Logging/AppenderFile.cpp
@@ -17,24 +17,45 @@
#include "AppenderFile.h"
#include "Common.h"
+#include "StringFormat.h"
+#include "Log.h"
#if PLATFORM == PLATFORM_WINDOWS
# include <Windows.h>
#endif
-AppenderFile::AppenderFile(uint8 id, std::string const& name, LogLevel level, const char* filename, const char* logDir, const char* mode, AppenderFlags flags, uint64 fileSize):
- Appender(id, name, APPENDER_FILE, level, flags),
+AppenderFile::AppenderFile(uint8 id, std::string const& name, LogLevel level, AppenderFlags flags, ExtraAppenderArgs extraArgs) :
+ Appender(id, name, level, flags),
logfile(NULL),
- _fileName(filename),
- _logDir(logDir),
- _maxFileSize(fileSize),
+ _logDir(sLog->GetLogsDir()),
_fileSize(0)
{
+ if (extraArgs.empty())
+ throw InvalidAppenderArgsException(Trinity::StringFormat("Log::CreateAppenderFromConfig: Missing file name for appender %s\n", name.c_str()));
+
+ _fileName = extraArgs[0];
+
+ char const* mode = "a";
+ if (extraArgs.size() > 1)
+ mode = extraArgs[1];
+
+ if (flags & APPENDER_FLAGS_USE_TIMESTAMP)
+ {
+ size_t dot_pos = _fileName.find_last_of(".");
+ if (dot_pos != std::string::npos)
+ _fileName.insert(dot_pos, sLog->GetLogsTimestamp());
+ else
+ _fileName += sLog->GetLogsTimestamp();
+ }
+
+ if (extraArgs.size() > 2)
+ _maxFileSize = atoi(extraArgs[2]);
+
_dynamicName = std::string::npos != _fileName.find("%s");
_backup = (flags & APPENDER_FLAGS_MAKE_FILE_BACKUP) != 0;
if (!_dynamicName)
- logfile = OpenFile(filename, mode, !strcmp(mode, "w") && _backup);
+ logfile = OpenFile(_fileName, mode, !strcmp(mode, "w") && _backup);
}
AppenderFile::~AppenderFile()