summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/logger/FileAppender.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/logger/FileAppender.cpp')
-rw-r--r--rbutil/rbutilqt/logger/FileAppender.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/logger/FileAppender.cpp b/rbutil/rbutilqt/logger/FileAppender.cpp
new file mode 100644
index 0000000000..3e4d0e22f9
--- /dev/null
+++ b/rbutil/rbutilqt/logger/FileAppender.cpp
@@ -0,0 +1,85 @@
1/*
2 Copyright (c) 2010 Boris Moiseev (cyberbobs at gmail dot com)
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License version 2.1
6 as published by the Free Software Foundation and appearing in the file
7 LICENSE.LGPL included in the packaging of this file.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13*/
14// Local
15#include "FileAppender.h"
16
17// STL
18#include <iostream>
19
20
21FileAppender::FileAppender(const QString& fileName)
22{
23 setFileName(fileName);
24}
25
26
27FileAppender::~FileAppender()
28{
29 closeFile();
30}
31
32
33QString FileAppender::fileName() const
34{
35 QMutexLocker locker(&m_logFileMutex);
36 return m_logFile.fileName();
37}
38
39
40void FileAppender::setFileName(const QString& s)
41{
42 QMutexLocker locker(&m_logFileMutex);
43 if (m_logFile.isOpen())
44 m_logFile.close();
45
46 m_logFile.setFileName(s);
47}
48
49
50bool FileAppender::openFile()
51{
52 bool isOpen = false;
53 if (!m_logFile.isOpen())
54 {
55 if (m_logFile.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
56 {
57 m_logStream.setDevice(&m_logFile);
58 isOpen = true;
59 }
60 else
61 {
62 std::cerr << "<FileAppender::append> Cannot open the log file " << qPrintable(m_logFile.fileName()) << std::endl;
63 }
64 }
65 return isOpen;
66}
67
68
69void FileAppender::append(const QDateTime& timeStamp, Logger::LogLevel logLevel, const char* file, int line,
70 const char* function, const QString& message)
71{
72 QMutexLocker locker(&m_logFileMutex);
73
74 openFile();
75
76 m_logStream << formattedString(timeStamp, logLevel, file, line, function, message);
77 m_logStream.flush();
78 m_logFile.flush();
79}
80
81void FileAppender::closeFile()
82{
83 QMutexLocker locker(&m_logFileMutex);
84 m_logFile.close();
85}