LCOV - code coverage report
Current view: top level - include/comphelper - logging.hxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 17 55 30.9 %
Date: 2014-11-03 Functions: 14 38 36.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef INCLUDED_COMPHELPER_LOGGING_HXX
      21             : #define INCLUDED_COMPHELPER_LOGGING_HXX
      22             : 
      23             : #include <comphelper/comphelperdllapi.h>
      24             : 
      25             : #include <com/sun/star/uno/XComponentContext.hpp>
      26             : #include <com/sun/star/logging/XLogHandler.hpp>
      27             : #include <com/sun/star/logging/LogLevel.hpp>
      28             : 
      29             : #include <boost/shared_ptr.hpp>
      30             : #include <boost/optional.hpp>
      31             : 
      32             : 
      33             : namespace comphelper
      34             : {
      35             : 
      36             : 
      37             : 
      38             :     //= string conversions, employed by the templatized log* members of
      39             :     //= EventLogger
      40             : 
      41             : 
      42             :     namespace log { namespace convert
      43             :     {
      44           0 :         inline const OUString& convertLogArgToString( const OUString& _rValue )
      45             :         {
      46           0 :             return _rValue;
      47             :         }
      48             : 
      49           0 :         inline OUString convertLogArgToString( const sal_Char* _pAsciiValue )
      50             :         {
      51           0 :             return OUString::createFromAscii( _pAsciiValue );
      52             :         }
      53             : 
      54           0 :         inline OUString convertLogArgToString( double      _nValue ) { return OUString::number( _nValue ); }
      55           0 :         inline OUString convertLogArgToString( float       _nValue ) { return OUString::number( _nValue ); }
      56           0 :         inline OUString convertLogArgToString( sal_Int64   _nValue ) { return OUString::number( _nValue ); }
      57           0 :         inline OUString convertLogArgToString( sal_Int32   _nValue ) { return OUString::number( _nValue ); }
      58           0 :         inline OUString convertLogArgToString( sal_Int16   _nValue ) { return OUString::number( _nValue ); }
      59             :         inline OUString convertLogArgToString( sal_Unicode _nValue ) { return OUString( _nValue ); }
      60           0 :         inline OUString convertLogArgToString( bool    _bValue ) { return OUString::boolean( _bValue ); }
      61             :         void convertLogArgToString(sal_Bool) SAL_DELETED_FUNCTION;
      62             : 
      63             :     } } // namespace log::convert
      64             : 
      65             : 
      66             :     //= EventLogger
      67             : 
      68             :     class EventLogger_Impl;
      69             :     typedef ::boost::optional< OUString >    OptionalString;
      70             : 
      71             :     /** encapsulates an com::sun::star::logging::XLogger
      72             : 
      73             :         The class silences several (unlikely) errors which could potentially happen
      74             :         when working with a logger. Additionally, it provides some convenience methods
      75             :         for logging events.
      76             : 
      77             :         You can use this class as follows
      78             : <pre>
      79             :     EventLogger aLogger( xContext, sLoggerName );
      80             :     ....
      81             :     aLogger.log( LogLevel::SEVERE, sSomeMessage );
      82             :     aLogger.logp( LogLevel::CONFIG, "MyClass", "MyMethod", sSomeMessage, SomeParameter1, SomeParameter2, SomeParameter3 );
      83             : </pre>
      84             : 
      85             :         The <code>log</code> and <code>logp</code> calls support up to 6 parameters, which can be of
      86             :         arbitrary type. For every parameter, there must exist a function <code>convertLogArgToString</code>
      87             :         which takes an argument of the respective type, and returns a string.
      88             : 
      89             :         After a parameter has been converted to a string using the above mentioned
      90             :         <code>convertLogArgToString</code> function, a placeholder $1$ (resp. $2$ resp. $4$ ...)
      91             :         in the message will be replaced with this string, and the resulting message will be logged.
      92             :     */
      93          52 :     class COMPHELPER_DLLPUBLIC EventLogger
      94             :     {
      95             :     protected:
      96             :         ::boost::shared_ptr< EventLogger_Impl > m_pImpl;
      97             : 
      98             :     public:
      99             :         /** creates an <code>EventLogger</code> instance working with a css.logging.XLogger
     100             :             instance given by ASCII name.
     101             : 
     102             :             @param _rxContext
     103             :                 the component context to create services
     104             : 
     105             :             @param _rLoggerName
     106             :                 the ASCII name of the logger to create.
     107             :         */
     108             :         EventLogger(
     109             :             const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext,
     110             :             const sal_Char* _pAsciiLoggerName
     111             :         );
     112             : 
     113             :         ~EventLogger();
     114             : 
     115             :     public:
     116             :         /// determines whether an event with the given level would be logged
     117             :         bool        isLoggable( const sal_Int32 _nLogLevel ) const;
     118             : 
     119             : 
     120             :         //- XLogger::log equivalents/wrappers
     121             :         //- string messages
     122             : 
     123             :         /// logs a given message, without any arguments, or source class/method names
     124             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage ) const
     125             :         {
     126             :             if ( isLoggable( _nLogLevel ) )
     127             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage );
     128             :             return false;
     129             :         }
     130             : 
     131             :         /** logs a given message, replacing a placeholder in the message with an argument
     132             : 
     133             :             The function takes, additionally to the log level and the message, an arbitrary
     134             :             argument. This argument is converted to a string using an overloaded function
     135             :             named <code>convertLogArgToString</code>. Then, a placeholder &quot;$1$&quot;
     136             :             is searched in the message string, and replaced with the argument string.
     137             :         */
     138             :         template< typename ARGTYPE1 >
     139             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
     140             :         {
     141             :             if ( isLoggable( _nLogLevel ) )
     142             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage,
     143             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
     144             :             return false;
     145             :         }
     146             : 
     147             :         /// logs a given message, replacing 2 placeholders in the message with respective values
     148             :         template< typename ARGTYPE1, typename ARGTYPE2 >
     149             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
     150             :         {
     151             :             if ( isLoggable( _nLogLevel ) )
     152             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage,
     153             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     154             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
     155             :             return false;
     156             :         }
     157             : 
     158             :         /// logs a given message, replacing 3 placeholders in the message with respective values
     159             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
     160             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
     161             :         {
     162             :             if ( isLoggable( _nLogLevel ) )
     163             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage,
     164             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     165             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     166             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ) );
     167             :             return false;
     168             :         }
     169             : 
     170             :         /// logs a given message, replacing 4 placeholders in the message with respective values
     171             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
     172             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
     173             :         {
     174             :             if ( isLoggable( _nLogLevel ) )
     175             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage,
     176             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     177             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     178             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     179             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ) );
     180             :             return false;
     181             :         }
     182             : 
     183             :         /// logs a given message, replacing 5 placeholders in the message with respective values
     184             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
     185             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
     186             :         {
     187             :             if ( isLoggable( _nLogLevel ) )
     188             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage,
     189             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     190             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     191             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     192             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     193             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ) );
     194             :             return false;
     195             :         }
     196             : 
     197             :         /// logs a given message, replacing 6 placeholders in the message with respective values
     198             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
     199             :         bool        log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
     200             :         {
     201             :             if ( isLoggable( _nLogLevel ) )
     202             :                 return impl_log( _nLogLevel, NULL, NULL, _rMessage,
     203             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     204             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     205             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     206             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     207             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ),
     208             :                     OptionalString( log::convert::convertLogArgToString( _argument6 ) ) );
     209             :             return false;
     210             :         }
     211             : 
     212             : 
     213             :         //- XLogger::log equivalents/wrappers
     214             :         //- ASCII messages
     215             : 
     216             :         /// logs a given message, without any arguments, or source class/method names
     217             :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage ) const
     218             :         {
     219             :             if ( isLoggable( _nLogLevel ) )
     220             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ) );
     221             :             return false;
     222             :         }
     223             : 
     224             :         /** logs a given message, replacing a placeholder in the message with an argument
     225             : 
     226             :             The function takes, additionally to the log level and the message, an arbitrary
     227             :             argument. This argument is converted to a string using an overloaded function
     228             :             named <code>convertLogArgToString</code>. Then, a placeholder &quot;$1$&quot;
     229             :             is searched in the message string, and replaced with the argument string.
     230             :         */
     231             :         template< typename ARGTYPE1 >
     232         576 :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage, ARGTYPE1 _argument1 ) const
     233             :         {
     234         576 :             if ( isLoggable( _nLogLevel ) )
     235             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ),
     236           0 :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
     237         576 :             return false;
     238             :         }
     239             : 
     240             :         /// logs a given message, replacing 2 placeholders in the message with respective values
     241             :         template< typename ARGTYPE1, typename ARGTYPE2 >
     242             :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
     243             :         {
     244             :             if ( isLoggable( _nLogLevel ) )
     245             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ),
     246             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     247             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
     248             :             return false;
     249             :         }
     250             : 
     251             :         /// logs a given message, replacing 3 placeholders in the message with respective values
     252             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
     253           0 :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
     254             :         {
     255           0 :             if ( isLoggable( _nLogLevel ) )
     256             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ),
     257             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     258             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     259           0 :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ) );
     260           0 :             return false;
     261             :         }
     262             : 
     263             :         /// logs a given message, replacing 4 placeholders in the message with respective values
     264             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
     265             :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
     266             :         {
     267             :             if ( isLoggable( _nLogLevel ) )
     268             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ),
     269             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     270             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     271             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     272             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ) );
     273             :             return false;
     274             :         }
     275             : 
     276             :         /// logs a given message, replacing 5 placeholders in the message with respective values
     277             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
     278             :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
     279             :         {
     280             :             if ( isLoggable( _nLogLevel ) )
     281             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ),
     282             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     283             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     284             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     285             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     286             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ) );
     287             :             return false;
     288             :         }
     289             : 
     290             :         /// logs a given message, replacing 6 placeholders in the message with respective values
     291             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
     292             :         bool        log( const sal_Int32 _nLogLevel, const sal_Char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
     293             :         {
     294             :             if ( isLoggable( _nLogLevel ) )
     295             :                 return impl_log( _nLogLevel, NULL, NULL, OUString::createFromAscii( _pMessage ),
     296             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     297             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     298             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     299             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     300             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ),
     301             :                     OptionalString( log::convert::convertLogArgToString( _argument6 ) ) );
     302             :             return false;
     303             :         }
     304             : 
     305             : 
     306             :         //- XLogger::logp equivalents/wrappers
     307             :         //- string messages
     308             : 
     309             :         /// logs a given message, without any arguments, or source class/method names
     310             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage ) const
     311             :         {
     312             :             if ( isLoggable( _nLogLevel ) )
     313             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage );
     314             :             return false;
     315             :         }
     316             : 
     317             :         /** logs a given message, replacing a placeholder in the message with an argument
     318             : 
     319             :             The function takes, additionally to the logp level and the message, an arbitrary
     320             :             argument. This argument is converted to a string using an overloaded function
     321             :             named <code>convertLogArgToString</code>. Then, a placeholder &quot;$1$&quot;
     322             :             is searched in the message string, and replaced with the argument string.
     323             :         */
     324             :         template< typename ARGTYPE1 >
     325             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
     326             :         {
     327             :             if ( isLoggable( _nLogLevel ) )
     328             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
     329             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
     330             :             return false;
     331             :         }
     332             : 
     333             :         /// logs a given message, replacing 2 placeholders in the message with respective values
     334             :         template< typename ARGTYPE1, typename ARGTYPE2 >
     335             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
     336             :         {
     337             :             if ( isLoggable( _nLogLevel ) )
     338             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
     339             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     340             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
     341             :             return false;
     342             :         }
     343             : 
     344             :         /// logs a given message, replacing 3 placeholders in the message with respective values
     345             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
     346             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
     347             :         {
     348             :             if ( isLoggable( _nLogLevel ) )
     349             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
     350             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     351             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     352             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ) );
     353             :             return false;
     354             :         }
     355             : 
     356             :         /// logs a given message, replacing 4 placeholders in the message with respective values
     357             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
     358             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
     359             :         {
     360             :             if ( isLoggable( _nLogLevel ) )
     361             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
     362             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     363             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     364             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     365             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ) );
     366             :             return false;
     367             :         }
     368             : 
     369             :         /// logs a given message, replacing 5 placeholders in the message with respective values
     370             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
     371             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
     372             :         {
     373             :             if ( isLoggable( _nLogLevel ) )
     374             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
     375             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     376             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     377             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     378             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     379             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ) );
     380             :             return false;
     381             :         }
     382             : 
     383             :         /// logs a given message, replacing 6 placeholders in the message with respective values
     384             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
     385             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
     386             :         {
     387             :             if ( isLoggable( _nLogLevel ) )
     388             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
     389             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     390             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     391             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     392             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     393             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ),
     394             :                     OptionalString( log::convert::convertLogArgToString( _argument6 ) ) );
     395             :             return false;
     396             :         }
     397             : 
     398             : 
     399             :         //- XLogger::logp equivalents/wrappers
     400             :         //- ASCII messages
     401             : 
     402             :         /// logs a given ASCII message, without any arguments, or source class/method names
     403             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage ) const
     404             :         {
     405             :             if ( isLoggable( _nLogLevel ) )
     406             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ) );
     407             :             return false;
     408             :         }
     409             : 
     410             :         /** logs a given ASCII message, replacing a placeholder in the message with an argument
     411             : 
     412             :             The function takes, additionally to the logp level and the message, an arbitrary
     413             :             argument. This argument is converted to a string using an overloaded function
     414             :             named <code>convertLogArgToString</code>. Then, a placeholder &quot;$1$&quot;
     415             :             is searched in the message string, and replaced with the argument string.
     416             :         */
     417             :         template< typename ARGTYPE1 >
     418             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage, ARGTYPE1 _argument1 ) const
     419             :         {
     420             :             if ( isLoggable( _nLogLevel ) )
     421             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
     422             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
     423             :             return false;
     424             :         }
     425             : 
     426             :         /// logs a given ASCII message, replacing 2 placeholders in the message with respective values
     427             :         template< typename ARGTYPE1, typename ARGTYPE2 >
     428             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
     429             :         {
     430             :             if ( isLoggable( _nLogLevel ) )
     431             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
     432             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     433             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
     434             :             return false;
     435             :         }
     436             : 
     437             :         /// logs a given ASCII message, replacing 3 placeholders in the message with respective values
     438             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
     439             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
     440             :         {
     441             :             if ( isLoggable( _nLogLevel ) )
     442             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
     443             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     444             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     445             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ) );
     446             :             return false;
     447             :         }
     448             : 
     449             :         /// logs a given ASCII message, replacing 4 placeholders in the message with respective values
     450             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
     451             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
     452             :         {
     453             :             if ( isLoggable( _nLogLevel ) )
     454             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
     455             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     456             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     457             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     458             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ) );
     459             :             return false;
     460             :         }
     461             : 
     462             :         /// logs a given ASCII message, replacing 5 placeholders in the message with respective values
     463             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
     464             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
     465             :         {
     466             :             if ( isLoggable( _nLogLevel ) )
     467             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
     468             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     469             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     470             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     471             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     472             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ) );
     473             :             return false;
     474             :         }
     475             : 
     476             :         /// logs a given ASCII message, replacing 6 placeholders in the message with respective values
     477             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
     478             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
     479             :         {
     480             :             if ( isLoggable( _nLogLevel ) )
     481             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
     482             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     483             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     484             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     485             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     486             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ),
     487             :                     OptionalString( log::convert::convertLogArgToString( _argument6 ) ) );
     488             :             return false;
     489             :         }
     490             : 
     491             :     protected:
     492             :         bool        impl_log(
     493             :                         const sal_Int32 _nLogLevel,
     494             :                         const sal_Char* _pSourceClass,
     495             :                         const sal_Char* _pSourceMethod,
     496             :                         const OUString& _rMessage,
     497             :                         const OptionalString& _rArgument1 = OptionalString(),
     498             :                         const OptionalString& _rArgument2 = OptionalString(),
     499             :                         const OptionalString& _rArgument3 = OptionalString(),
     500             :                         const OptionalString& _rArgument4 = OptionalString(),
     501             :                         const OptionalString& _rArgument5 = OptionalString(),
     502             :                         const OptionalString& _rArgument6 = OptionalString()
     503             :                     ) const;
     504             :     };
     505             : 
     506             : 
     507             :     //= ResourceBasedEventLogger
     508             : 
     509             :     struct ResourceBasedEventLogger_Data;
     510             :     /** extends the EventLogger class with functionality to load log messages from
     511             :         a resource bundle.
     512             :     */
     513         100 :     class COMPHELPER_DLLPUBLIC ResourceBasedEventLogger : public EventLogger
     514             :     {
     515             :     private:
     516             :         ::boost::shared_ptr< ResourceBasedEventLogger_Data >    m_pData;
     517             : 
     518             :     public:
     519             :         /** creates a resource based event logger
     520             :             @param _rxContext
     521             :                 the component context for creating new components
     522             :             @param _pResourceBundleBaseName
     523             :                 the ASCII base name of the resource bundle to use. Will be used
     524             :                 in conjunction with XResourceBundleLoader::loadResource.
     525             :             @param _pAsciiLoggerName
     526             :                 the ASCII name of the logger to work with. If NULL, the office-wide
     527             :                 default logger will be used.
     528             : 
     529             :         */
     530             :         ResourceBasedEventLogger(
     531             :             const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext,
     532             :             const sal_Char* _pResourceBundleBaseName,
     533             :             const sal_Char* _pAsciiLoggerName = NULL
     534             :         );
     535             : 
     536             : 
     537             :         //- XLogger::log equivalents/wrappers
     538             :         //- resource IDs
     539             : 
     540             :         /// logs a given message, without any arguments, or source class/method names
     541           4 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID ) const
     542             :         {
     543           4 :             if ( isLoggable( _nLogLevel ) )
     544           0 :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ) );
     545           4 :             return false;
     546             :         }
     547             : 
     548             :         /** logs a given message, replacing a placeholder in the message with an argument
     549             : 
     550             :             The function takes, additionally to the log level and the message, an arbitrary
     551             :             argument. This argument is converted to a string using an overloaded function
     552             :             named <code>convertLogArgToString</code>. Then, a placeholder &quot;$1$&quot;
     553             :             is searched in the message string, and replaced with the argument string.
     554             :         */
     555             :         template< typename ARGTYPE1 >
     556          22 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1 ) const
     557             :         {
     558          22 :             if ( isLoggable( _nLogLevel ) )
     559             :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ),
     560           0 :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
     561          22 :             return false;
     562             :         }
     563             : 
     564             :         /// logs a given message, replacing 2 placeholders in the message with respective values
     565             :         template< typename ARGTYPE1, typename ARGTYPE2 >
     566          86 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
     567             :         {
     568          86 :             if ( isLoggable( _nLogLevel ) )
     569             :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ),
     570             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     571           0 :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
     572          86 :             return false;
     573             :         }
     574             : 
     575             :         /// logs a given message, replacing 3 placeholders in the message with respective values
     576             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
     577          22 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
     578             :         {
     579          22 :             if ( isLoggable( _nLogLevel ) )
     580             :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ),
     581           0 :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     582           0 :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     583           0 :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ) );
     584          22 :             return false;
     585             :         }
     586             : 
     587             :         /// logs a given message, replacing 4 placeholders in the message with respective values
     588             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
     589           0 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
     590             :         {
     591           0 :             if ( isLoggable( _nLogLevel ) )
     592             :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ),
     593             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     594             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     595             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     596           0 :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ) );
     597           0 :             return false;
     598             :         }
     599             : 
     600             :         /// logs a given message, replacing 5 placeholders in the message with respective values
     601             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
     602           0 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
     603             :         {
     604           0 :             if ( isLoggable( _nLogLevel ) )
     605             :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ),
     606             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     607             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     608           0 :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     609           0 :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     610           0 :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ) );
     611           0 :             return false;
     612             :         }
     613             : 
     614             :         /// logs a given message, replacing 6 placeholders in the message with respective values
     615             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
     616           0 :         bool        log( const sal_Int32 _nLogLevel, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
     617             :         {
     618           0 :             if ( isLoggable( _nLogLevel ) )
     619             :                 return impl_log( _nLogLevel, NULL, NULL, impl_loadStringMessage_nothrow( _nMessageResID ),
     620             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     621             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     622           0 :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     623           0 :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     624           0 :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ),
     625           0 :                     OptionalString( log::convert::convertLogArgToString( _argument6 ) ) );
     626           0 :             return false;
     627             :         }
     628             : 
     629             : 
     630             :         //- XLogger::logp equivalents/wrappers
     631             :         //- resource IDs
     632             : 
     633             :         /// logs a given ASCII message, without any arguments, or source class/method names
     634             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID ) const
     635             :         {
     636             :             if ( isLoggable( _nLogLevel ) )
     637             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ) );
     638             :             return false;
     639             :         }
     640             : 
     641             :         /** logs a given ASCII message, replacing a placeholder in the message with an argument
     642             :         */
     643             :         template< typename ARGTYPE1 >
     644             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1 ) const
     645             :         {
     646             :             if ( isLoggable( _nLogLevel ) )
     647             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ),
     648             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ) );
     649             :             return false;
     650             :         }
     651             : 
     652             :         /// logs a given ASCII message, replacing 2 placeholders in the message with respective values
     653             :         template< typename ARGTYPE1, typename ARGTYPE2 >
     654             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
     655             :         {
     656             :             if ( isLoggable( _nLogLevel ) )
     657             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ),
     658             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     659             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ) );
     660             :             return false;
     661             :         }
     662             : 
     663             :         /// logs a given ASCII message, replacing 3 placeholders in the message with respective values
     664             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
     665             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
     666             :         {
     667             :             if ( isLoggable( _nLogLevel ) )
     668             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ),
     669             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     670             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     671             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ) );
     672             :             return false;
     673             :         }
     674             : 
     675             :         /// logs a given ASCII message, replacing 4 placeholders in the message with respective values
     676             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
     677             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
     678             :         {
     679             :             if ( isLoggable( _nLogLevel ) )
     680             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ),
     681             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     682             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     683             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     684             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ) );
     685             :             return false;
     686             :         }
     687             : 
     688             :         /// logs a given ASCII message, replacing 5 placeholders in the message with respective values
     689             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
     690             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
     691             :         {
     692             :             if ( isLoggable( _nLogLevel ) )
     693             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ),
     694             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     695             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     696             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     697             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     698             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ) );
     699             :             return false;
     700             :         }
     701             : 
     702             :         /// logs a given ASCII message, replacing 6 placeholders in the message with respective values
     703             :         template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
     704             :         bool        logp( const sal_Int32 _nLogLevel, const sal_Char* _pSourceClass, const sal_Char* _pSourceMethod, const sal_Int32 _nMessageResID, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
     705             :         {
     706             :             if ( isLoggable( _nLogLevel ) )
     707             :                 return impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, impl_loadStringMessage_nothrow( _nMessageResID ),
     708             :                     OptionalString( log::convert::convertLogArgToString( _argument1 ) ),
     709             :                     OptionalString( log::convert::convertLogArgToString( _argument2 ) ),
     710             :                     OptionalString( log::convert::convertLogArgToString( _argument3 ) ),
     711             :                     OptionalString( log::convert::convertLogArgToString( _argument4 ) ),
     712             :                     OptionalString( log::convert::convertLogArgToString( _argument5 ) ),
     713             :                     OptionalString( log::convert::convertLogArgToString( _argument6 ) ) );
     714             :             return false;
     715             :         }
     716             : 
     717             :     private:
     718             :         OUString impl_loadStringMessage_nothrow( const sal_Int32 _nMessageResID ) const;
     719             :     };
     720             : 
     721             : 
     722             : } // namespace comphelper
     723             : 
     724             : 
     725             : #endif // INCLUDED_COMPHELPER_LOGGING_HXX
     726             : 
     727             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10