Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
backend-persistent-file.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Contact: Lukasz Pawelczyk (l.pawelczyk@samsung.com)
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 
25 #ifndef LOGGER_BACKEND_PERSISTENT_FILE_HPP
26 #define LOGGER_BACKEND_PERSISTENT_FILE_HPP
27 
28 #include "logger/backend.hpp"
29 
30 #include <fcntl.h>
31 #include <fstream>
32 #include <ext/stdio_filebuf.h>
33 
34 namespace logger {
35 
37 public:
38  PersistentFileBackend(const std::string& filePath) :
39  mfilePath(filePath),
40  mOut(mfilePath, std::ios::app)
41  {
42  using filebufType = __gnu_cxx::stdio_filebuf<std::ofstream::char_type>;
43  const int fd = static_cast<filebufType*>(mOut.rdbuf())->fd();
44  ::fcntl(fd, F_SETFD, ::fcntl(fd, F_GETFD) | FD_CLOEXEC);
45  }
46 
47  void log(LogLevel logLevel,
48  const std::string& file,
49  const unsigned int& line,
50  const std::string& func,
51  const std::string& message) override;
52 private:
53  std::string mfilePath;
54  std::ofstream mOut;
55 };
56 
57 } // namespace logger
58 
59 #endif // LOGGER_BACKEND_PERSISTENT_FILE_HPP
PersistentFileBackend(const std::string &filePath)
Definition: backend-persistent-file.hpp:38
std::ofstream mOut
Definition: backend-persistent-file.hpp:54
LogLevel
Available log levels.
Definition: level.hpp:36
std::string mfilePath
Definition: backend-persistent-file.hpp:53
void log(LogLevel logLevel, const std::string &file, const unsigned int &line, const std::string &func, const std::string &message) override
Definition: backend-persistent-file.cpp:33
Logging backend.
Abstract class for logger backends.
Definition: backend.hpp:38
Definition: backend-persistent-file.hpp:36