PLCnext API Documentation 25.0.2.69
LoggerBase.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/System/Commons/Diagnostics/Logging/LogLevel.hpp"
9
10// forwards
11namespace Log4Arp
12{
13class Logger;
14}
15
16namespace Arp { namespace System { namespace Commons { namespace Diagnostics { namespace Logging
17{
18
21class ARP_CXX_SYMBOL_EXPORT LoggerBase
22{
23public: // Impl forward declaration
24 using Impl = Log4Arp::Logger;
25
26public: // construction/destruction/assignment
27 explicit LoggerBase(const String& loggerName);
29 LoggerBase(LoggerBase&& arg)noexcept;
33
34public: // setter/getter operations
35 String GetName(void)const;
36 LogLevel GetLogLevel(void)const;
37
38public: // operations
39 void InitializeOnce(const String& loggerName);
40 void Log(LogLevel severity, String&& message)const;
41 void Log(LogLevel severity, const String& message)const;
42
43public: // generic log operations
44 template<typename... Args> void Trace(const char* format, const Args& ... args)const;
45 template<typename... Args> void Debug(const char* format, const Args& ... args)const;
46 template<typename... Args> void Info(const char* format, const Args& ... args)const;
47 template<typename... Args> void Warning(const char* format, const Args& ... args)const;
48 template<typename... Args> void Critical(const char* format, const Args& ... args)const;
49 template<typename... Args> void Error(const char* format, const Args& ... args)const;
50 template<typename... Args> void Fatal(const char* format, const Args& ... args)const;
51
52 template<typename... Args> void PrintTrace(const char* format, const Args& ... args)const;
53 template<typename... Args> void PrintDebug(const char* format, const Args& ... args)const;
54 template<typename... Args> void PrintInfo(const char* format, const Args& ... args)const;
55 template<typename... Args> void PrintWarning(const char* format, const Args& ... args)const;
56 template<typename... Args> void PrintCritical(const char* format, const Args& ... args)const;
57 template<typename... Args> void PrintError(const char* format, const Args& ... args)const;
58 template<typename... Args> void PrintFatal(const char* format, const Args& ... args)const;
59
60 template<typename... Args> void Log(LogLevel logLevel, const char* format, const Args& ... args)const;
61 template<typename... Args> void Logf(LogLevel logLevel, const char* format, const Args& ... args)const;
62
63public: // internal operations
64 Impl& GetImpl(void);
65 const Impl& GetImpl(void)const;
66
67private: // Impl usings
69
70private: // Impl fields
71 Pimpl pimpl;
72};
73
74}}}}} // end of namespace Arp::System::Commons::Diagnostics::Logging
75
77// inlclude inline generic methods of class LoggerBase
78#include "Arp/System/Commons/Diagnostics/Logging/LoggerBase.inl"
Adapter class to implement PImpl idiom.
Definition: PimplPtr.hxx:15
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
This class shall be used as base class for all Logger.
Definition: LoggerBase.hpp:22
LoggerBase(LoggerBase &&arg) noexcept
Default move constructor.
LoggerBase(const LoggerBase &arg)
Default copy constructor.
LoggerBase & operator=(LoggerBase &&arg) noexcept
Default move-assignment operator.
LoggerBase & operator=(const LoggerBase &arg)
Default copy-assignment operator.
Root namespace for the PLCnext API