1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_EXTENSIONS_SOURCE_LOGGING_LOGHANDLER_HXX
21 #define INCLUDED_EXTENSIONS_SOURCE_LOGGING_LOGHANDLER_HXX
23 #include <com/sun/star/logging/XLogFormatter.hpp>
24 #include <com/sun/star/uno/XComponentContext.hpp>
25 #include <com/sun/star/logging/LogRecord.hpp>
27 #include <comphelper/namedvaluecollection.hxx>
28 #include <cppuhelper/interfacecontainer.hxx>
29 #include <rtl/string.hxx>
35 class LogHandlerHelper
39 rtl_TextEncoding m_eEncoding
;
41 ::com::sun::star::uno::Reference
< ::com::sun::star::logging::XLogFormatter
>
45 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XComponentContext
>
47 ::osl::Mutex
& m_rMutex
;
48 ::cppu::OBroadcastHelper
& m_rBHelper
;
53 const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XComponentContext
>& _rxContext
,
54 ::osl::Mutex
& _rMutex
,
55 ::cppu::OBroadcastHelper
& _rBHelper
59 bool getIsInitialized() const { return m_bInitialized
; }
60 void setIsInitialized() { m_bInitialized
= true; }
62 bool getEncoding( OUString
& _out_rEncoding
) const;
63 bool setEncoding( const OUString
& _rEncoding
);
65 inline rtl_TextEncoding
66 getTextEncoding() const { return m_eEncoding
; }
68 inline ::com::sun::star::uno::Reference
< ::com::sun::star::logging::XLogFormatter
>
69 getFormatter() const { return m_xFormatter
; }
71 setFormatter( const ::com::sun::star::uno::Reference
< ::com::sun::star::logging::XLogFormatter
>& _rxFormatter
)
73 m_xFormatter
= _rxFormatter
;
77 getLevel() const { return m_nLevel
; }
79 setLevel( const sal_Int32 _nLevel
)
84 /** prepares implementation of an public accessible method of a log handler
86 <code>enterMethod</code> does the following things:
87 <ul><li>It acquires the mutex given in the constructor.</li>
88 <li>It checks whether the component is already initialized, and throws an exception if not os.</li>
89 <li>It checks whether the component is already disposed, and throws an exception if not os.</li>
90 <li>It creates a default formatter (PlainTextFormatter), if no formatter exists at this time.</li>
95 /** formats a record for publishing it
97 The method first checks whether the records log level is greater or equal our own
98 log level. If not, <FALSE/> is returned.
100 Second, our formatter is used to create a unicode string from the log record. If an error occurs
101 during this, e.g. if the formatter is <NULL/> or throws an exception during formatting,
102 <FALSE/> is returned.
104 Finally, the unicode string is encoded into a byte string, using our encoding setting. Then,
107 bool formatForPublishing( const ::com::sun::star::logging::LogRecord
& _rRecord
, OString
& _out_rEntry
) const;
109 /** retrieves our formatter's heading, encoded with our encoding
111 @return <TRUE/> in case of success, <FALSE/> if any error occurred
113 bool getEncodedHead( OString
& _out_rHead
) const;
115 /** retrieves our formatter's tail, encoded with our encoding
117 @return <TRUE/> in case of success, <FALSE/> if any error occurred
119 bool getEncodedTail( OString
& _out_rTail
) const;
121 /** initializes the instance from a collection of named settings
123 The recognized named settings are <code>Encoding</code>, <code>Formatter</code>, and <code>Level</code>,
124 which initialize the respective attributes.
126 Settings which are recognized are remove from the given collection. This allows
127 the caller to determine whether or not the collection contained any unsupported
128 items, and react appropriately.
130 @throws IllegalArgumentException
131 if one of the values in the collection is of wrong type.
133 void initFromSettings( const ::comphelper::NamedValueCollection
& _rSettings
);
137 } // namespace logging
140 #endif // INCLUDED_EXTENSIONS_SOURCE_LOGGING_LOGHANDLER_HXX
142 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */