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 std::shared_ptr< EventLogger_Impl > m_pImpl;
95
96 public:
107 const css::uno::Reference< css::uno::XComponentContext >& _rxContext,
108 const char* _pAsciiLoggerName
109 );
110
111 public:
113 bool isLoggable( const sal_Int32 _nLogLevel ) const;
114
115
116 //- XLogger::log equivalents/wrappers
117 //- string messages
118
120 void log( const sal_Int32 _nLogLevel, const OUString& rMessage ) const
121 {
122 if ( isLoggable( _nLogLevel ) )
123 impl_log(_nLogLevel, nullptr, nullptr, rMessage);
124 }
125
126 const css::uno::Reference<css::logging::XLogger> & getLogger() const;
127
135 template< typename ARGTYPE1 >
136 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
137 {
138 if ( isLoggable( _nLogLevel ) )
139 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
141 }
142
144 template< typename ARGTYPE1, typename ARGTYPE2 >
145 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
146 {
147 if ( isLoggable( _nLogLevel ) )
148 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
151 }
152
154 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
155 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
156 {
157 if ( isLoggable( _nLogLevel ) )
158 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
162 }
163
165 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
166 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
167 {
168 if ( isLoggable( _nLogLevel ) )
169 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
174 }
175
177 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
178 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
179 {
180 if ( isLoggable( _nLogLevel ) )
181 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
187 }
188
190 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
191 void log( const sal_Int32 _nLogLevel, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
192 {
193 if ( isLoggable( _nLogLevel ) )
194 impl_log( _nLogLevel, nullptr, nullptr, _rMessage,
201 }
202
203
204 //- XLogger::log equivalents/wrappers
205 //- ASCII messages
206
214 template< typename ARGTYPE1 >
215 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1 ) const
216 {
217 if ( isLoggable( _nLogLevel ) )
218 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
220 }
221
223 template< typename ARGTYPE1, typename ARGTYPE2 >
224 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
225 {
226 if ( isLoggable( _nLogLevel ) )
227 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
230 }
231
233 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
234 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
235 {
236 if ( isLoggable( _nLogLevel ) )
237 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
241 }
242
244 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
245 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
246 {
247 if ( isLoggable( _nLogLevel ) )
248 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
253 }
254
256 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
257 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5 ) const
258 {
259 if ( isLoggable( _nLogLevel ) )
260 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
266 }
267
269 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
270 void log( const sal_Int32 _nLogLevel, const char* _pMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4, ARGTYPE5 _argument5, ARGTYPE6 _argument6 ) const
271 {
272 if ( isLoggable( _nLogLevel ) )
273 impl_log( _nLogLevel, nullptr, nullptr, OUString::createFromAscii( _pMessage ),
280 }
281
282
283 //- XLogger::logp equivalents/wrappers
284 //- string messages
285
293 template< typename ARGTYPE1 >
294 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1 ) const
295 {
296 if ( isLoggable( _nLogLevel ) )
297 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
299 }
300
302 template< typename ARGTYPE1, typename ARGTYPE2 >
303 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
304 {
305 if ( isLoggable( _nLogLevel ) )
306 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
309 }
310
312 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
313 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
314 {
315 if ( isLoggable( _nLogLevel ) )
316 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
320 }
321
323 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
324 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const OUString& _rMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
325 {
326 if ( isLoggable( _nLogLevel ) )
327 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
332 }
333
335 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
336 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
337 {
338 if ( isLoggable( _nLogLevel ) )
339 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
345 }
346
348 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
349 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
350 {
351 if ( isLoggable( _nLogLevel ) )
352 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, _rMessage,
359 }
360
361
362 //- XLogger::logp equivalents/wrappers
363 //- ASCII messages
364
372 template< typename ARGTYPE1 >
373 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1 ) const
374 {
375 if ( isLoggable( _nLogLevel ) )
376 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
378 }
379
381 template< typename ARGTYPE1, typename ARGTYPE2 >
382 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2 ) const
383 {
384 if ( isLoggable( _nLogLevel ) )
385 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
388 }
389
391 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3 >
392 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3 ) const
393 {
394 if ( isLoggable( _nLogLevel ) )
395 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
399 }
400
402 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4 >
403 void logp( const sal_Int32 _nLogLevel, const char* _pSourceClass, const char* _pSourceMethod, const char* _pAsciiMessage, ARGTYPE1 _argument1, ARGTYPE2 _argument2, ARGTYPE3 _argument3, ARGTYPE4 _argument4 ) const
404 {
405 if ( isLoggable( _nLogLevel ) )
406 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
411 }
412
414 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5 >
415 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
416 {
417 if ( isLoggable( _nLogLevel ) )
418 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
424 }
425
427 template< typename ARGTYPE1, typename ARGTYPE2, typename ARGTYPE3, typename ARGTYPE4, typename ARGTYPE5, typename ARGTYPE6 >
428 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
429 {
430 if ( isLoggable( _nLogLevel ) )
431 impl_log( _nLogLevel, _pSourceClass, _pSourceMethod, OUString::createFromAscii( _pAsciiMessage ),
438 }
439
440 protected:
441 void impl_log(
442 const sal_Int32 _nLogLevel,
443 const char* _pSourceClass,
444 const char* _pSourceMethod,
445 const OUString& _rMessage,
446 const OptionalString& _rArgument1 = OptionalString(),
447 const OptionalString& _rArgument2 = OptionalString(),
448 const OptionalString& _rArgument3 = OptionalString(),
449 const OptionalString& _rArgument4 = OptionalString(),
450 const OptionalString& _rArgument5 = OptionalString(),
451 const OptionalString& _rArgument6 = OptionalString()
452 ) const;
453 };
454} // namespace comphelper
455
456
457#endif // INCLUDED_COMPHELPER_LOGGING_HXX
458
459/* 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:373
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:392
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:178
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:215
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:403
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:155
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:428
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:324
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:234
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:257
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:145
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:303
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:270
std::shared_ptr< EventLogger_Impl > m_pImpl
Definition: logging.hxx:94
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:120
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:166
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:245
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:191
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:415
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:313
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:136
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:349
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:336
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:224
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:294
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:382
#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