LibreOffice Module comphelper (master) 1
logging.hxx
Go to the documentation of this file.
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
24#include <rtl/ustring.hxx>
25
26#include <optional>
27#include <memory>
28
29namespace com::sun::star::uno { template <class interface_type> class Reference; }
30namespace com::sun::star::uno { class XComponentContext; }
31namespace com::sun::star::logging { class XLogger; }
32
33namespace comphelper
34{
35
36
37 //= string conversions, employed by the templatized log* members of
38 //= EventLogger
39
40
41 namespace log::convert
42 {
43 inline const OUString& convertLogArgToString( const OUString& _rValue )
44 {
45 return _rValue;
46 }
47
48 inline OUString convertLogArgToString( const char* _pAsciiValue )
49 {
50 return OUString::createFromAscii( _pAsciiValue );
51 }
52
53 inline OUString convertLogArgToString( double _nValue ) { return OUString::number( _nValue ); }
54 inline OUString convertLogArgToString( float _nValue ) { return OUString::number( _nValue ); }
55 inline OUString convertLogArgToString( sal_Int64 _nValue ) { return OUString::number( _nValue ); }
56 inline OUString convertLogArgToString( sal_Int32 _nValue ) { return OUString::number( _nValue ); }
57 inline OUString convertLogArgToString( sal_Int16 _nValue ) { return OUString::number( _nValue ); }
58 inline OUString convertLogArgToString( sal_Unicode _nValue ) { return OUString( _nValue ); }
59 inline OUString convertLogArgToString( bool _bValue ) { return OUString::boolean( _bValue ); }
61
62 } // namespace log::convert
63
64
65 //= EventLogger
66
67 class EventLogger_Impl;
68 typedef ::std::optional< OUString > OptionalString;
69
93 {
94 protected:
95 std::shared_ptr< EventLogger_Impl > m_pImpl;
96
97 public:
108 const css::uno::Reference< css::uno::XComponentContext >& _rxContext,
109 const char* _pAsciiLoggerName
110 );
111
112 public:
114 bool isLoggable( const sal_Int32 _nLogLevel ) const;
115
116
117 //- XLogger::log equivalents/wrappers
118 //- string messages
119
121 void log( const sal_Int32 _nLogLevel, const OUString& rMessage ) const
122 {
123 if ( isLoggable( _nLogLevel ) )
124 impl_log(_nLogLevel, nullptr, nullptr, rMessage);
125 }
126
127 const css::uno::Reference<css::logging::XLogger> & getLogger() const;
128
136 template< typename ARGTYPE1 >
137 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
138 {
139 if ( isLoggable( _nLogLevel ) )
140 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
142 }
143
145 template< typename ARGTYPE1, typename ARGTYPE2 >
146 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
147 {
148 if ( isLoggable( _nLogLevel ) )
149 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
152 }
153
155 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
156 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
157 {
158 if ( isLoggable( _nLogLevel ) )
159 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
163 }
164
166 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
167 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
168 {
169 if ( isLoggable( _nLogLevel ) )
170 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
175 }
176
178 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
179 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
180 {
181 if ( isLoggable( _nLogLevel ) )
182 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
188 }
189
191 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
192 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
193 {
194 if ( isLoggable( _nLogLevel ) )
195 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
202 }
203
204
205 //- XLogger::log equivalents/wrappers
206 //- ASCII messages
207
215 template< typename ARGTYPE1 >
216 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1 ) const
217 {
218 if ( isLoggable( _nLogLevel ) )
219 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
221 }
222
224 template< typename ARGTYPE1, typename ARGTYPE2 >
225 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
226 {
227 if ( isLoggable( _nLogLevel ) )
228 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
231 }
232
234 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
235 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
236 {
237 if ( isLoggable( _nLogLevel ) )
238 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
242 }
243
245 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
246 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
247 {
248 if ( isLoggable( _nLogLevel ) )
249 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
254 }
255
257 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
258 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
259 {
260 if ( isLoggable( _nLogLevel ) )
261 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
267 }
268
270 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
271 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
272 {
273 if ( isLoggable( _nLogLevel ) )
274 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
281 }
282
283
284 //- XLogger::logp equivalents/wrappers
285 //- string messages
286
294 template< typename ARGTYPE1 >
295 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
296 {
297 if ( isLoggable( _nLogLevel ) )
298 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
300 }
301
303 template< typename ARGTYPE1, typename ARGTYPE2 >
304 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
305 {
306 if ( isLoggable( _nLogLevel ) )
307 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
310 }
311
313 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
314 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
315 {
316 if ( isLoggable( _nLogLevel ) )
317 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
321 }
322
324 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
325 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
326 {
327 if ( isLoggable( _nLogLevel ) )
328 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
333 }
334
336 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
337 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
338 {
339 if ( isLoggable( _nLogLevel ) )
340 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
346 }
347
349 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
350 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
351 {
352 if ( isLoggable( _nLogLevel ) )
353 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
360 }
361
362
363 //- XLogger::logp equivalents/wrappers
364 //- ASCII messages
365
373 template< typename ARGTYPE1 >
374 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1 ) const
375 {
376 if ( isLoggable( _nLogLevel ) )
377 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
379 }
380
382 template< typename ARGTYPE1, typename ARGTYPE2 >
383 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
384 {
385 if ( isLoggable( _nLogLevel ) )
386 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
389 }
390
392 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
393 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
394 {
395 if ( isLoggable( _nLogLevel ) )
396 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
400 }
401
403 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
404 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
405 {
406 if ( isLoggable( _nLogLevel ) )
407 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
412 }
413
415 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
416 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
417 {
418 if ( isLoggable( _nLogLevel ) )
419 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
425 }
426
428 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
429 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
430 {
431 if ( isLoggable( _nLogLevel ) )
432 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
439 }
440
441 protected:
442 void impl_log(
443 const sal_Int32 _nLogLevel,
444 const char* _pSourceClass,
445 const char* _pSourceMethod,
446 const OUString& _rMessage,
447 const OptionalString& _rArgument1 = OptionalString(),
448 const OptionalString& _rArgument2 = OptionalString(),
449 const OptionalString& _rArgument3 = OptionalString(),
450 const OptionalString& _rArgument4 = OptionalString(),
451 const OptionalString& _rArgument5 = OptionalString(),
452 const OptionalString& _rArgument6 = OptionalString()
453 ) const;
454 };
455} // namespace comphelper
456
457
458#endif // INCLUDED_COMPHELPER_LOGGING_HXX
459
460/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
encapsulates a css::logging::XLogger
Definition: logging.hxx:93
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const char *_pAsciiMessage, ARGTYPE1 _argument1) const
logs a given ASCII message, replacing a placeholder in the message with an argument
Definition: logging.hxx:374
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const char *_pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3) const
logs a given ASCII message, replacing 3 placeholders in the message with respective values
Definition: logging.hxx:393
void log(const sal_Int32 _nLogLevel, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5) const
logs a given message, replacing 5 placeholders in the message with respective values
Definition: logging.hxx:179
void log(const sal_Int32 _nLogLevel, const char *_pMessage, ARGTYPE1 _argument1) const
logs a given message, replacing a placeholder in the message with an argument
Definition: logging.hxx:216
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const char *_pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4) const
logs a given ASCII message, replacing 4 placeholders in the message with respective values
Definition: logging.hxx:404
void log(const sal_Int32 _nLogLevel, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3) const
logs a given message, replacing 3 placeholders in the message with respective values
Definition: logging.hxx:156
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const char *_pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6) const
logs a given ASCII message, replacing 6 placeholders in the message with respective values
Definition: logging.hxx:429
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4) const
logs a given message, replacing 4 placeholders in the message with respective values
Definition: logging.hxx:325
void log(const sal_Int32 _nLogLevel, const char *_pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3) const
logs a given message, replacing 3 placeholders in the message with respective values
Definition: logging.hxx:235
void log(const sal_Int32 _nLogLevel, const char *_pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5) const
logs a given message, replacing 5 placeholders in the message with respective values
Definition: logging.hxx:258
void log(const sal_Int32 _nLogLevel, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2) const
logs a given message, replacing 2 placeholders in the message with respective values
Definition: logging.hxx:146
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2) const
logs a given message, replacing 2 placeholders in the message with respective values
Definition: logging.hxx:304
void log(const sal_Int32 _nLogLevel, const char *_pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6) const
logs a given message, replacing 6 placeholders in the message with respective values
Definition: logging.hxx:271
std::shared_ptr< EventLogger_Impl > m_pImpl
Definition: logging.hxx:95
void log(const sal_Int32 _nLogLevel, const OUString &rMessage) const
logs a given message, without any arguments, or source class/method names
Definition: logging.hxx:121
void log(const sal_Int32 _nLogLevel, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4) const
logs a given message, replacing 4 placeholders in the message with respective values
Definition: logging.hxx:167
void log(const sal_Int32 _nLogLevel, const char *_pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4) const
logs a given message, replacing 4 placeholders in the message with respective values
Definition: logging.hxx:246
void log(const sal_Int32 _nLogLevel, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6) const
logs a given message, replacing 6 placeholders in the message with respective values
Definition: logging.hxx:192
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const char *_pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5) const
logs a given ASCII message, replacing 5 placeholders in the message with respective values
Definition: logging.hxx:416
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3) const
logs a given message, replacing 3 placeholders in the message with respective values
Definition: logging.hxx:314
void log(const sal_Int32 _nLogLevel, const OUString &_rMessage, ARGTYPE1 _argument1) const
logs a given message, replacing a placeholder in the message with an argument
Definition: logging.hxx:137
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6) const
logs a given message, replacing 6 placeholders in the message with respective values
Definition: logging.hxx:350
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const OUString &_rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5) const
logs a given message, replacing 5 placeholders in the message with respective values
Definition: logging.hxx:337
void log(const sal_Int32 _nLogLevel, const char *_pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2) const
logs a given message, replacing 2 placeholders in the message with respective values
Definition: logging.hxx:225
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const OUString &_rMessage, ARGTYPE1 _argument1) const
logs a given message, replacing a placeholder in the message with an argument
Definition: logging.hxx:295
void logp(const sal_Int32 _nLogLevel, const char *_pSourceClass, const char *_pSourceMethod, const char *_pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2) const
logs a given ASCII message, replacing 2 placeholders in the message with respective values
Definition: logging.hxx:383
#define COMPHELPER_DLLPUBLIC
sal_Int32 _nValue
OUString convertLogArgToString(const Date &_rDate)
::std::optional< OUString > OptionalString
Definition: logging.hxx:67
Reference
unsigned char sal_Bool
sal_uInt16 sal_Unicode