mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-07-28 03:31:46 +02:00
bin
module
vendor
CPR
ConcurrentQueue
Fmt
JSMN
MaxmindDB
POCO
ApacheConnector
CppParser
CppUnit
Crypto
Data
Encodings
Foundation
cmake
include
Poco
Dynamic
ASCIIEncoding.h
AbstractCache.h
AbstractDelegate.h
AbstractEvent.h
AbstractObserver.h
AbstractPriorityDelegate.h
AbstractStrategy.h
AccessExpirationDecorator.h
AccessExpireCache.h
AccessExpireLRUCache.h
AccessExpireStrategy.h
ActiveDispatcher.h
ActiveMethod.h
ActiveResult.h
ActiveRunnable.h
ActiveStarter.h
Activity.h
Alignment.h
Any.h
ArchiveStrategy.h
Array.h
Ascii.h
AsyncChannel.h
AtomicCounter.h
AtomicFlag.h
AutoPtr.h
AutoReleasePool.h
Base32Decoder.h
Base32Encoder.h
Base64Decoder.h
Base64Encoder.h
BasicEvent.h
BinaryReader.h
BinaryWriter.h
Buffer.h
BufferAllocator.h
BufferedBidirectionalStreamBuf.h
BufferedStreamBuf.h
Bugcheck.h
ByteOrder.h
Channel.h
Checksum.h
ClassLibrary.h
ClassLoader.h
Clock.h
Condition.h
Config.h
Configurable.h
ConsoleChannel.h
CountingStream.h
DataURIStream.h
DataURIStreamFactory.h
DateTime.h
DateTimeFormat.h
DateTimeFormatter.h
DateTimeParser.h
Debugger.h
DefaultStrategy.h
DeflatingStream.h
Delegate.h
DigestEngine.h
DigestStream.h
DirectoryIterator.h
DirectoryIteratorStrategy.h
DirectoryIterator_UNIX.h
DirectoryIterator_WIN32U.h
DirectoryWatcher.h
DynamicAny.h
DynamicAnyHolder.h
DynamicFactory.h
DynamicStruct.h
Environment.h
Environment_UNIX.h
Environment_VX.h
Environment_WIN32U.h
Environment_WINCE.h
Error.h
ErrorHandler.h
Event.h
EventArgs.h
EventChannel.h
EventLogChannel.h
Event_POSIX.h
Event_VX.h
Event_WIN32.h
Exception.h
ExpirationDecorator.h
Expire.h
ExpireCache.h
ExpireLRUCache.h
ExpireStrategy.h
FIFOBuffer.h
FIFOBufferStream.h
FIFOEvent.h
FIFOStrategy.h
FPEnvironment.h
FPEnvironment_C99.h
FPEnvironment_DEC.h
FPEnvironment_DUMMY.h
FPEnvironment_QNX.h
FPEnvironment_SUN.h
FPEnvironment_WIN32.h
File.h
FileChannel.h
FileStream.h
FileStreamFactory.h
FileStream_POSIX.h
FileStream_WIN32.h
File_UNIX.h
File_VX.h
File_WIN32U.h
File_WINCE.h
Format.h
Formatter.h
FormattingChannel.h
Foundation.h
FunctionDelegate.h
FunctionPriorityDelegate.h
Glob.h
HMACEngine.h
Hash.h
HashFunction.h
HashMap.h
HashSet.h
HashStatistic.h
HashTable.h
HexBinaryDecoder.h
HexBinaryEncoder.h
InflatingStream.h
Instantiator.h
JSONString.h
KeyValueArgs.h
LRUCache.h
LRUStrategy.h
Latin1Encoding.h
Latin2Encoding.h
Latin9Encoding.h
LineEndingConverter.h
LinearHashTable.h
ListMap.h
LocalDateTime.h
LogFile.h
LogFile_STD.h
LogFile_WIN32U.h
LogStream.h
Logger.h
LoggingFactory.h
LoggingRegistry.h
MD4Engine.h
MD5Engine.h
Manifest.h
MemoryPool.h
MemoryStream.h
Message.h
MetaObject.h
MetaProgramming.h
Mutex.h
Mutex_POSIX.h
Mutex_VX.h
Mutex_WIN32.h
Mutex_WINCE.h
NObserver.h
NamedEvent.h
NamedEvent_Android.h
NamedEvent_UNIX.h
NamedEvent_WIN32U.h
NamedMutex.h
NamedMutex_Android.h
NamedMutex_UNIX.h
NamedMutex_WIN32U.h
NamedTuple.h
NestedDiagnosticContext.h
Notification.h
NotificationCenter.h
NotificationQueue.h
NotificationStrategy.h
NullChannel.h
NullStream.h
Nullable.h
NumberFormatter.h
NumberParser.h
NumericString.h
ObjectPool.h
Observer.h
Optional.h
OrderedMap.h
OrderedSet.h
PBKDF2Engine.h
Path.h
Path_UNIX.h
Path_WIN32U.h
Path_WINCE.h
PatternFormatter.h
Pipe.h
PipeImpl.h
PipeImpl_DUMMY.h
PipeImpl_POSIX.h
PipeImpl_WIN32.h
PipeStream.h
Platform.h
Platform_POSIX.h
Platform_VX.h
Platform_WIN32.h
Poco.h
PriorityDelegate.h
PriorityEvent.h
PriorityExpire.h
PriorityNotificationQueue.h
PriorityStrategy.h
Process.h
Process_UNIX.h
Process_VX.h
Process_WIN32U.h
Process_WINCE.h
PurgeStrategy.h
RWLock.h
RWLock_Android.h
RWLock_POSIX.h
RWLock_VX.h
RWLock_WIN32.h
RWLock_WINCE.h
Random.h
RandomStream.h
RecursiveDirectoryIterator.h
RecursiveDirectoryIteratorImpl.h
RefCountedObject.h
RegularExpression.h
RotateStrategy.h
Runnable.h
RunnableAdapter.h
SHA1Engine.h
SHA2Engine.h
ScopedLock.h
ScopedUnlock.h
Semaphore.h
Semaphore_POSIX.h
Semaphore_VX.h
Semaphore_WIN32.h
SharedLibrary.h
SharedLibrary_HPUX.h
SharedLibrary_UNIX.h
SharedLibrary_VX.h
SharedLibrary_WIN32U.h
SharedMemory.h
SharedMemory_DUMMY.h
SharedMemory_POSIX.h
SharedMemory_WIN32.h
SharedPtr.h
SignalHandler.h
SimpleFileChannel.h
SimpleHashTable.h
SingletonHolder.h
SortedDirectoryIterator.h
SplitterChannel.h
Stopwatch.h
StrategyCollection.h
StreamChannel.h
StreamConverter.h
StreamCopier.h
StreamTokenizer.h
StreamUtil.h
String.h
StringTokenizer.h
SynchronizedObject.h
SyslogChannel.h
Task.h
TaskManager.h
TaskNotification.h
TeeStream.h
TemporaryFile.h
TextBufferIterator.h
TextConverter.h
TextEncoding.h
TextIterator.h
Thread.h
ThreadLocal.h
ThreadPool.h
ThreadTarget.h
Thread_POSIX.h
Thread_VX.h
Thread_WIN32.h
Thread_WINCE.h
TimedNotificationQueue.h
Timer.h
Timespan.h
Timestamp.h
Timezone.h
Token.h
Tuple.h
TypeList.h
Types.h
URI.h
URIStreamFactory.h
URIStreamOpener.h
UTF16Encoding.h
UTF32Encoding.h
UTF8Encoding.h
UTF8String.h
UTFString.h
UUID.h
UUIDGenerator.h
UnWindows.h
UnbufferedStreamBuf.h
Unicode.h
UnicodeConverter.h
UniqueAccessExpireCache.h
UniqueAccessExpireLRUCache.h
UniqueAccessExpireStrategy.h
UniqueExpireCache.h
UniqueExpireLRUCache.h
UniqueExpireStrategy.h
ValidArgs.h
Version.h
Void.h
Windows1250Encoding.h
Windows1251Encoding.h
Windows1252Encoding.h
WindowsConsoleChannel.h
ordered_hash.h
ordered_map.h
ordered_set.h
zconf.h
zlib.h
samples
src
testsuite
wcelibcex-1.0
CMakeLists.txt
Foundation_vs140.sln
Foundation_vs140.vcxproj
Foundation_vs140.vcxproj.filters
Foundation_vs150.sln
Foundation_vs150.vcxproj
Foundation_vs150.vcxproj.filters
Foundation_vs160.sln
Foundation_vs160.vcxproj
Foundation_vs160.vcxproj.filters
Makefile
extradirs
JSON
JWT
MongoDB
Net
NetSSL_OpenSSL
NetSSL_Win
PDF
PageCompiler
PocoDoc
ProGen
Redis
SevenZip
Util
XML
Zip
appveyor
build
cmake
contrib
doc
packaging
patches
release
travis
.gitattributes
.gitignore
.gitmodules
.travis.yml
CHANGELOG
CMakeLists.txt
CODE_OF_CONDUCT.md
CONTRIBUTING.md
CONTRIBUTORS
LICENSE
Makefile
NEWS
README
README.md
VERSION
appveyor.yml
build_cmake.cmd
build_cmake.sh
build_vs140.cmd
build_vs150.cmd
build_vs160.cmd
buildwin.cmd
buildwin.ps1
components
configure
cppignore.lnx
cppignore.win
env.bat
env.sh
libversion
SimpleIni
Squirrel
TinyDir
ZMQ
CMakeLists.txt
.gitignore
.gitmodules
CMakeLists.txt
LICENSE
README.md
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
158 lines
5.3 KiB
C++
158 lines
5.3 KiB
C++
//
|
|
// PatternFormatter.h
|
|
//
|
|
// Library: Foundation
|
|
// Package: Logging
|
|
// Module: PatternFormatter
|
|
//
|
|
// Definition of the PatternFormatter class.
|
|
//
|
|
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
//
|
|
|
|
|
|
#ifndef Foundation_PatternFormatter_INCLUDED
|
|
#define Foundation_PatternFormatter_INCLUDED
|
|
|
|
|
|
#include "Poco/Foundation.h"
|
|
#include "Poco/Formatter.h"
|
|
#include "Poco/Message.h"
|
|
#include <vector>
|
|
|
|
|
|
namespace Poco {
|
|
|
|
|
|
class Foundation_API PatternFormatter: public Formatter
|
|
/// This Formatter allows for custom formatting of
|
|
/// log messages based on format patterns.
|
|
///
|
|
/// The format pattern is used as a template to format the message and
|
|
/// is copied character by character except for the following special characters,
|
|
/// which are replaced by the corresponding value.
|
|
///
|
|
/// * %s - message source
|
|
/// * %t - message text
|
|
/// * %l - message priority level (1 .. 7)
|
|
/// * %p - message priority (Fatal, Critical, Error, Warning, Notice, Information, Debug, Trace)
|
|
/// * %q - abbreviated message priority (F, C, E, W, N, I, D, T)
|
|
/// * %P - message process identifier
|
|
/// * %T - message thread name
|
|
/// * %I - message thread identifier (numeric)
|
|
/// * %N - node or host name
|
|
/// * %U - message source file path (empty string if not set)
|
|
/// * %u - message source line number (0 if not set)
|
|
/// * %w - message date/time abbreviated weekday (Mon, Tue, ...)
|
|
/// * %W - message date/time full weekday (Monday, Tuesday, ...)
|
|
/// * %b - message date/time abbreviated month (Jan, Feb, ...)
|
|
/// * %B - message date/time full month (January, February, ...)
|
|
/// * %d - message date/time zero-padded day of month (01 .. 31)
|
|
/// * %e - message date/time day of month (1 .. 31)
|
|
/// * %f - message date/time space-padded day of month ( 1 .. 31)
|
|
/// * %m - message date/time zero-padded month (01 .. 12)
|
|
/// * %n - message date/time month (1 .. 12)
|
|
/// * %o - message date/time space-padded month ( 1 .. 12)
|
|
/// * %y - message date/time year without century (70)
|
|
/// * %Y - message date/time year with century (1970)
|
|
/// * %H - message date/time hour (00 .. 23)
|
|
/// * %h - message date/time hour (00 .. 12)
|
|
/// * %a - message date/time am/pm
|
|
/// * %A - message date/time AM/PM
|
|
/// * %M - message date/time minute (00 .. 59)
|
|
/// * %S - message date/time second (00 .. 59)
|
|
/// * %i - message date/time millisecond (000 .. 999)
|
|
/// * %c - message date/time centisecond (0 .. 9)
|
|
/// * %F - message date/time fractional seconds/microseconds (000000 - 999999)
|
|
/// * %z - time zone differential in ISO 8601 format (Z or +NN.NN)
|
|
/// * %Z - time zone differential in RFC format (GMT or +NNNN)
|
|
/// * %L - convert time to local time (must be specified before any date/time specifier; does not itself output anything)
|
|
/// * %E - epoch time (UTC, seconds since midnight, January 1, 1970)
|
|
/// * %v[width] - the message source (%s) but text length is padded/cropped to 'width'
|
|
/// * %[name] - the value of the message parameter with the given name
|
|
/// * %% - percent sign
|
|
|
|
{
|
|
public:
|
|
using Ptr = AutoPtr<PatternFormatter>;
|
|
|
|
PatternFormatter();
|
|
/// Creates a PatternFormatter.
|
|
/// The format pattern must be specified with
|
|
/// a call to setProperty.
|
|
|
|
PatternFormatter(const std::string& format);
|
|
/// Creates a PatternFormatter that uses the
|
|
/// given format pattern.
|
|
|
|
~PatternFormatter();
|
|
/// Destroys the PatternFormatter.
|
|
|
|
void format(const Message& msg, std::string& text);
|
|
/// Formats the message according to the specified
|
|
/// format pattern and places the result in text.
|
|
|
|
void setProperty(const std::string& name, const std::string& value);
|
|
/// Sets the property with the given name to the given value.
|
|
///
|
|
/// The following properties are supported:
|
|
///
|
|
/// * pattern: The format pattern. See the PatternFormatter class
|
|
/// for details.
|
|
/// * times: Specifies whether times are adjusted for local time
|
|
/// or taken as they are in UTC. Supported values are "local" and "UTC".
|
|
/// * priorityNames: Provide a comma-separated list of custom priority names,
|
|
/// e.g. "Fatal, Critical, Error, Warning, Notice, Information, Debug, Trace"
|
|
///
|
|
/// If any other property name is given, a PropertyNotSupported
|
|
/// exception is thrown.
|
|
|
|
std::string getProperty(const std::string& name) const;
|
|
/// Returns the value of the property with the given name or
|
|
/// throws a PropertyNotSupported exception if the given
|
|
/// name is not recognized.
|
|
|
|
static const std::string PROP_PATTERN;
|
|
static const std::string PROP_TIMES;
|
|
static const std::string PROP_PRIORITY_NAMES;
|
|
|
|
protected:
|
|
const std::string& getPriorityName(int);
|
|
/// Returns a string for the given priority value.
|
|
|
|
private:
|
|
struct PatternAction
|
|
{
|
|
PatternAction(): key(0), length(0)
|
|
{
|
|
}
|
|
|
|
char key;
|
|
int length;
|
|
std::string property;
|
|
std::string prepend;
|
|
};
|
|
|
|
void parsePattern();
|
|
/// Will parse the _pattern string into the vector of PatternActions,
|
|
/// which contains the message key, any text that needs to be written first
|
|
/// a property in case of %[] and required length.
|
|
|
|
void parsePriorityNames();
|
|
|
|
std::vector<PatternAction> _patternActions;
|
|
bool _localTime;
|
|
std::string _pattern;
|
|
std::string _priorityNames;
|
|
std::string _priorities[9];
|
|
};
|
|
|
|
|
|
} // namespace Poco
|
|
|
|
|
|
#endif // Foundation_PatternFormatter_INCLUDED
|