/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
class EventLogger_Impl; typedef ::std::optional< OUString > OptionalString;
/** encapsulates a css::logging::XLogger
The class silences several (unlikely) errors which could potentially happen when working with a logger. Additionally, it provides some convenience methods for logging events.
You can use this class as follows <pre> EventLogger aLogger( xContext, sLoggerName ); ... aLogger.log( LogLevel::SEVERE, sSomeMessage ); aLogger.logp( LogLevel::CONFIG, "MyClass", "MyMethod", sSomeMessage, SomeParameter1, SomeParameter2, SomeParameter3 ); </pre>
The <code>log</code> and <code>logp</code> calls support up to 6 parameters, which can be of arbitrary type. For every parameter, there must exist a function <code>convertLogArgToString</code> which takes an argument of the respective type, and returns a string.
After a parameter has been converted to a string using the above mentioned <code>convertLogArgToString</code> function, a placeholder $1$ (resp. $2$ resp. $4$ ...) in the message will be replaced with this string, and the resulting message will be logged.
*/ class COMPHELPER_DLLPUBLIC EventLogger
{
std::shared_ptr< EventLogger_Impl > m_pImpl;
public: /** creates an <code>EventLogger</code> instance working with a css.logging.XLogger instance given by ASCII name.
@param _rxContext the component context to create services
@param _rLoggerName the ASCII name of the logger to create.
*/
EventLogger( const css::uno::Reference< css::uno::XComponentContext >& _rxContext, constchar* _pAsciiLoggerName
);
public: /// determines whether an event with the given level would be logged bool isLoggable( const sal_Int32 _nLogLevel ) const;
/** logs a given message, replacing a placeholder in the message with an argument
The function takes, additionally to the log level and the message, an arbitrary argument. This argument is converted to a string using an overloaded function named <code>convertLogArgToString</code>. Then, a placeholder "$1$" is searched in the message string, and replaced with the argument string.
*/ template< typename ARGTYPE1 > void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
{ if ( isLoggable( _nLogLevel ) )
impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
}
/// logs a given message, replacing 2 placeholders in the message with respective values template< typename ARGTYPE1, typename ARGTYPE2 > void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
{ if ( isLoggable( _nLogLevel ) )
impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
}
/** logs a given message, replacing a placeholder in the message with an argument
The function takes, additionally to the log level and the message, an arbitrary argument. This argument is converted to a string using an overloaded function named <code>convertLogArgToString</code>. Then, a placeholder "$1$" is searched in the message string, and replaced with the argument string.
*/ template< typename ARGTYPE1 > void log( const sal_Int32 _nLogLevel, constchar* _pMessage, ARGTYPE1 _argument1 ) const
{ if ( isLoggable( _nLogLevel ) )
impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
}
/// logs a given message, replacing 2 placeholders in the message with respective values template< typename ARGTYPE1, typename ARGTYPE2 > void log( const sal_Int32 _nLogLevel, constchar* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
{ if ( isLoggable( _nLogLevel ) )
impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
}
/** logs a given message, replacing a placeholder in the message with an argument
The function takes, additionally to the logp level and the message, an arbitrary argument. This argument is converted to a string using an overloaded function named <code>convertLogArgToString</code>. Then, a placeholder "$1$" is searched in the message string, and replaced with the argument string.
*/ template< typename ARGTYPE1 > void logp( const sal_Int32 _nLogLevel, constchar* _pSourceClass, constchar* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
{ if ( isLoggable( _nLogLevel ) )
impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
}
/** logs a given ASCII message, replacing a placeholder in the message with an argument
The function takes, additionally to the logp level and the message, an arbitrary argument. This argument is converted to a string using an overloaded function named <code>convertLogArgToString</code>. Then, a placeholder "$1$" is searched in the message string, and replaced with the argument string.
*/ template< typename ARGTYPE1 > void logp( const sal_Int32 _nLogLevel, constchar* _pSourceClass, constchar* _pSourceMethod, constchar* _pAsciiMessage, ARGTYPE1 _argument1 ) const
{ if ( isLoggable( _nLogLevel ) )
impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.