BDE 4.14.0 Production release
Loading...
Searching...
No Matches
ball_loggermanagerconfiguration.h
Go to the documentation of this file.
1/// @file ball_loggermanagerconfiguration.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// ball_loggermanagerconfiguration.h -*-C++-*-
8#ifndef INCLUDED_BALL_LOGGERMANAGERCONFIGURATION
9#define INCLUDED_BALL_LOGGERMANAGERCONFIGURATION
10
11#include <bsls_ident.h>
12BSLS_IDENT("$Id: $")
13
14/// @defgroup ball_loggermanagerconfiguration ball_loggermanagerconfiguration
15/// @brief Provide a constrained-attribute class for the logger manager.
16/// @addtogroup bal
17/// @{
18/// @addtogroup ball
19/// @{
20/// @addtogroup ball_loggermanagerconfiguration
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#ball_loggermanagerconfiguration-purpose"> Purpose</a>
25/// * <a href="#ball_loggermanagerconfiguration-classes"> Classes </a>
26/// * <a href="#ball_loggermanagerconfiguration-description"> Description </a>
27/// * <a href="#ball_loggermanagerconfiguration-thread-safety"> Thread Safety </a>
28/// * <a href="#ball_loggermanagerconfiguration-usage"> Usage </a>
29/// * <a href="#ball_loggermanagerconfiguration-example-1-basic-usage"> Example 1: Basic Usage </a>
30///
31/// # Purpose {#ball_loggermanagerconfiguration-purpose}
32/// Provide a constrained-attribute class for the logger manager.
33///
34/// # Classes {#ball_loggermanagerconfiguration-classes}
35///
36/// - ball::LoggerManagerConfiguration: configuration spec for a logger manager
37///
38/// @see ball_loggermanagerdefaults
39///
40/// # Description {#ball_loggermanagerconfiguration-description}
41/// This component provides a constrained-attribute class that
42/// contains a set of attributes (objects and parameters) of particular use to
43/// logger managers. The constraints are actively maintained by the class. In
44/// particular, the "set" methods for constrained values will fail if their
45/// arguments are not consistent with the constraints. Also, the constructor
46/// does not take any constrained arguments, but rather sets those values to
47/// valid defaults unconditionally. This behavior avoids "silent failures",
48/// since the constructor cannot explicitly return a status value.
49///
50/// The attributes of a `ball::LoggerManagerConfiguration` object and their
51/// constraints are given, respectively, in two tables below. Before listing
52/// the attributes, however, we list the types that are provided by the
53/// `ball::LoggerManagerConfiguration` class to simply the definition of some of
54/// the attributes:
55/// @code
56/// TYPE 'typedef' alias
57/// ------------------------------------------ ------------------------------
58/// bsl::function<void(ball::UserFields *)> UserFieldsPopulatorCallback
59///
60/// bsl::function<void(bsl::string *, const char *)>
61/// CategoryNameFilterCallback
62///
63/// bsl::function<void(int *, int *, int *, int *, const char *)>
64/// DefaultThresholdLevelsCallback
65/// @endcode
66/// The attributes contained by a `ball::LoggerManagerConfiguration` object
67/// follow:
68/// @code
69/// TYPE NAME
70/// ------------------------------------------ ------------------------------
71/// ball::LoggerManagerDefaults defaults
72///
73/// UserFieldsPopulatorCallback userFieldsPopulatorCallback
74///
75/// CategoryNameFilterCallback categoryNameFilterCallback
76///
77/// DefaultThresholdLevelsCallback defaultThresholdLevelsCallback
78///
79/// LogOrder logOrder
80///
81/// TriggerMarkers triggerMarkers
82///
83/// NAME DESCRIPTION
84/// ------------------- -------------------------------------------
85/// defaults constrained defaults for buffer size and
86/// thresholds
87///
88/// userFieldsPopulatorCallback populates user-defined fields in a log
89/// record
90///
91/// categoryNameFilterCallback invoked on category names, e.g., to re-map
92/// characters
93///
94/// defaultThresholdLevelsCallback sets category severity threshold levels (by
95/// default)
96///
97/// logOrder defines the order in which log messages are
98/// published for Trigger and Trigger-All
99/// events; default is LIFO (last-in first-out)
100///
101/// triggerMarkers defines whether text will be written to the
102/// log to indicate whether a series of log
103/// records were logged due to either a Trigger
104/// or Trigger-All event; if this attribute is
105/// 'e_BEGIN_END_MARKERS', then
106/// "BEGIN RECORD DUMP" and "END RECORD DUMP"
107/// will be written before and after each
108/// sequence of records logged due to a Trigger
109/// or Trigger-All event; default is
110/// 'e_BEGIN_END_MARKERS'.
111/// @endcode
112/// The constraints are as follows:
113/// @code
114/// NAME CONSTRAINT
115/// +--------------------------------+--------------------------------+
116/// | defaults | (a constrained-attribute type) |
117/// +--------------------------------+--------------------------------+
118/// | userFieldsPopulatorCallback | (none) |
119/// +--------------------------------+--------------------------------+
120/// | categoryNameFilterCallback | (none) |
121/// +--------------------------------+--------------------------------+
122/// | defaultThresholdLevelsCallback | (none) |
123/// +--------------------------------+--------------------------------+
124/// | logOrder | (none) |
125/// +--------------------------------+--------------------------------+
126/// | triggerMarkers | (none) |
127/// +--------------------------------+--------------------------------+
128/// @endcode
129/// For convenience, the `ball::LoggerManagerConfiguration` interface contains
130/// manipulators and accessors to configure and inspect the value of its
131/// contained `ball::LoggerManagerDefaults` object; these methods are identical
132/// to those of `ball::LoggerManagerDefaults`. See the
133/// @ref ball_loggermanagerdefaults component for details on the defaults and
134/// their constraints.
135///
136/// ## Thread Safety {#ball_loggermanagerconfiguration-thread-safety}
137///
138///
139/// This constrained-attribute component is *thread-safe* but not
140/// *thread-enabled*, and requires explicit synchronization in the user space.
141/// Note that any of the contained user-defined callbacks may be invoked from
142/// *any* thread, and the user must account for that.
143///
144/// ## Usage {#ball_loggermanagerconfiguration-usage}
145///
146///
147/// This section illustrates intended use of this component.
148///
149/// ### Example 1: Basic Usage {#ball_loggermanagerconfiguration-example-1-basic-usage}
150///
151///
152/// First, we define a simple function that will serve as a
153/// `UserFieldsPopulatorCallback`, a callback that will be invoked for each
154/// logged message to populate user defined fields for the log record:
155/// @code
156/// void exampleCallback(ball::UserFields *fields)
157/// {
158/// fields->appendString("example user field value");
159/// }
160/// @endcode
161/// Next, we define a function `inititialize` in which we will create and
162/// configure a `ball::LoggerManagerConfiguration` object (see
163/// @ref ball_loggermanager for an example of how to create the logger-manager
164/// singleton object):
165/// @code
166/// void initializeConfiguration(bool verbose)
167/// {
168/// ball::LoggerManagerConfiguration config;
169///
170/// @endcode
171/// Then, we configure the default record buffer size, logger buffer size, and
172/// the various logging thresholds (see @ref ball_loggermanager for more
173/// information on the various threshold levels):
174/// @code
175/// if (0 != config.setDefaultRecordBufferSizeIfValid(32768) ||
176/// 0 != config.setDefaultLoggerBufferSizeIfValid(1024) ||
177/// 0 != config.setDefaultThresholdLevelsIfValid(0, 64, 0, 0)) {
178/// bsl::cerr << "Failed set log configuration defaults." << bsl::endl;
179/// bsl::exit(-1);
180/// }
181///
182/// assert(32768 == config.defaultRecordBufferSize());
183/// assert( 1024 == config.defaultLoggerBufferSize());
184/// assert( 0 == config.defaultRecordLevel());
185/// assert( 64 == config.defaultPassLevel());
186/// assert( 0 == config.defaultTriggerLevel());
187/// assert( 0 == config.defaultTriggerAllLevel());
188/// @endcode
189/// Next, we populate the remaining attributes of our configuration object (note
190/// that the following methods cannot fail and return `void`):
191/// @code
192/// config.setUserFieldsPopulatorCallback(&exampleCallback);
193/// config.setLogOrder(ball::LoggerManagerConfiguration::e_FIFO);
194/// config.setTriggerMarkers(ball::LoggerManagerConfiguration::e_NO_MARKERS);
195/// @endcode
196/// Now, we verify the options are configured correctly:
197/// @code
198/// assert(ball::LoggerManagerConfiguration::e_FIFO == config.logOrder());
199/// assert(ball::LoggerManagerConfiguration::e_NO_MARKERS
200/// == config.triggerMarkers());
201/// @endcode
202/// Finally, we print the configuration value to `stdout` and return:
203/// @code
204/// if (verbose) {
205/// bsl::cout << config << bsl::endl;
206/// }
207/// }
208/// @endcode
209/// This produces the following (multi-line) output:
210/// @code
211/// [
212/// Defaults:
213/// [
214/// recordBufferSize : 32768
215/// loggerBufferSize : 1024
216/// recordLevel : 0
217/// passLevel : 64
218/// triggerLevel : 0
219/// triggerAllLevel : 0
220/// ]
221/// User Fields Populator functor is not null
222/// Category Name Filter functor is null
223/// Default Threshold Callback functor is null
224/// Logging order is FIFO
225/// Trigger markers are NO_MARKERS
226/// ]
227/// @endcode
228/// @}
229/** @} */
230/** @} */
231
232/** @addtogroup bal
233 * @{
234 */
235/** @addtogroup ball
236 * @{
237 */
238/** @addtogroup ball_loggermanagerconfiguration
239 * @{
240 */
241
242#include <balscm_version.h>
243
245
246#include <bslma_allocator.h>
248
250
251#include <bsl_functional.h>
252#include <bsl_iosfwd.h>
253#include <bsl_string.h>
254
255
256namespace ball {
257
258class UserFields;
259
260 // ================================
261 // class LoggerManagerConfiguration
262 // ================================
263
264/// This class provides constrained configuration parameters for a logger
265/// manager. The constraints are maintained as class invariants; it is not
266/// possible to obtain an invalid object through this interface.
267///
268/// This class support *in-core* *value-semantic* operations, including
269/// copy construction, assignment, and equality comparison; `ostream`
270/// printing is supported, but in a modified form to handle functors, and
271/// BDEX serialization cannot be supported at all. (A precise operational
272/// definition of when two instances have the same (in-core) value can be
273/// found in the description of `operator==` for the class.) This class is
274/// *exception* *neutral* with no guarantee of rollback: If an exception is
275/// thrown during the invocation of a method on a pre-existing instance, the
276/// object is left in a valid state, but its value is undefined. In no
277/// event is memory leaked. Finally, *aliasing* (e.g., using all or part of
278/// an object as both source and destination) is supported in all cases.
279///
280/// See @ref ball_loggermanagerconfiguration
282
283 public:
284 // PUBLIC TYPES
285
286 /// `UserFieldsPopulatorCallback` is the type of a user-supplied
287 /// callback functor used to populate the user-defined fields in each
288 /// log record.
289 typedef bsl::function<void(ball::UserFields *)>
291
292 /// `CategoryNameFilterCallback` is the type of the user-supplied
293 /// functor that translates external category names to internal names.
294 typedef bsl::function<void(bsl::string *, const char *)>
296
297 /// `DefaultThresholdLevelsCallback` is the type of the functor that
298 /// determines default threshold levels for categories added to the
299 /// registry by the `setCategory(const char *)` method.
300 typedef bsl::function<void(int *, int *, int *, int *, const char *)>
302
303 enum LogOrder {
304 // The 'LogOrder' enumeration defines the order in which messages will
305 // be published to the underlying observer in the case of Trigger and
306 // Trigger-All events.
307
308 e_FIFO, // oldest logged messages are published first
309 e_LIFO // newest logged messages are published first
310
311#ifndef BDE_OMIT_INTERNAL_DEPRECATED
316#endif // BDE_OMIT_INTERNAL_DEPRECATED
317 };
318
319 /// The `TriggerMarkers` enumeration defines whether text will be
320 /// written to the log to indicate whether a series of log records were
321 /// logged due to either a Trigger or Trigger-All event. If this
322 /// attribute is `e_BEGIN_END_MARKERS`, then "BEGIN RECORD DUMP" and
323 /// "END RECORD DUMP" will be written before and after each sequence of
324 /// records logged due to a Trigger or Trigger-All event. The default
325 /// value of this attribute is `e_BEGIN_END_MARKERS`.
327 e_NO_MARKERS, // don't print any markers
328
329 e_BEGIN_END_MARKERS // print "BEGIN RECORD DUMP" and
330 // "END RECORD DUMP" markers (default)
331
332#ifndef BDE_OMIT_INTERNAL_DEPRECATED
335
338#endif // BDE_OMIT_INTERNAL_DEPRECATED
339 };
340
341 private:
342 // DATA
343 LoggerManagerDefaults d_defaults; // default buffer size for
344 // logger (for macros) and
345 // set of constrained default
346 // severity threshold levels
347 // for logger manager
348
350 d_userPopulator; // user callback to add
351 // optional user-defined
352 // fields to a log record
353
355 d_categoryNameFilter; // callback to modify input
356 // category names for
357 // internal storage
358
360 d_defaultThresholdsCb; // callback to supply default
361 // severity thresholds for
362 // categories
363
364 LogOrder d_logOrder; // logging order
365
366 TriggerMarkers d_triggerMarkers; // trigger marker
367
368 bslma::Allocator *d_allocator_p; // memory allocator (held,
369 // not owned)
370
371 // FRIENDS
372 friend bsl::ostream& operator<<(bsl::ostream&,
374
377
378 public:
379 // CLASS METHODS
380
381 /// Return `true` if the specified `numBytes` is a valid default-logger
382 /// record-buffer size value, and `false` otherwise. `numBytes` is
383 /// valid if `0 < numBytes`.
384 static bool isValidDefaultRecordBufferSize(int numBytes);
385
386 /// Return `true` if the specified `numBytes` is a valid default
387 /// logger-message-buffer size value, and `false` otherwise. `numBytes`
388 /// is valid if `0 < numBytes`.
389 static bool isValidDefaultLoggerBufferSize(int numBytes);
390
391 /// Return `true` if each of the specified `recordLevel`, `passLevel`,
392 /// `triggerLevel`, and `triggerAllLevel` values is a valid default
393 /// severity threshold level, and `false` otherwise. Valid severity
394 /// threshold levels are in the range `[0 .. 255]`.
395 static bool areValidDefaultThresholdLevels(int recordLevel,
396 int passLevel,
397 int triggerLevel,
398 int triggerAllLevel);
399
400 // TRAITS
403
404 // CREATORS
405
406 /// Create a logger manager configuration constrained-attribute object
407 /// having valid default values for all attributes. Optionally specify
408 /// a `basicAllocator` used to supply memory. If `basicAllocator` is 0,
409 /// the currently installed default allocator is used.
410 explicit LoggerManagerConfiguration(bslma::Allocator *basicAllocator = 0);
411
412 /// Create a logger manager configuration constrained-attribute object
413 /// having the in-core value of the specified `original` object.
414 /// Optionally specify a `basicAllocator` used to supply memory. If
415 /// `basicAllocator` is 0, the currently installed default allocator is
416 /// used.
418 const LoggerManagerConfiguration& original,
419 bslma::Allocator *basicAllocator = 0);
420
421 /// Destroy this object.
423
424 // MANIPULATORS
425
426 /// Assign to this logger manager configuration constrained-attribute
427 /// object the in-core value of the specified `rhs` object.
429 const LoggerManagerConfiguration& rhs);
430
431 /// Set the default values attribute of this object to the specified
432 /// `defaults`. Note that, since `defaults` is itself a
433 /// constrained-attribute object, this method cannot fail.
435
436 /// Set the default-logger record-buffer size attribute of the
437 /// `LoggerManagerDefaults` attribute of this object to the specified
438 /// `numBytes` if `0 < numBytes`. Return 0 on success, and a non-zero
439 /// value otherwise with no effect on this object.
441
442 /// Set the default logger-message-buffer size attribute of the
443 /// `LoggerManagerDefaults` attribute of this object to the specified
444 /// `numBytes` if `0 < numBytes`. Return 0 on success, and a non-zero
445 /// value otherwise with no effect on this object.
447
448 /// Set the passthrough severity threshold level attribute of the
449 /// `LoggerManagerDefaults` attribute of this object to the specified
450 /// `passLevel`, if it is in the range `[0 .. 255]`, and set all the
451 /// other threshold levels (recordLevel, triggerLevel, triggerAllLevel)
452 /// to 0. Return 0 on success, and a non-zero value otherwise with no
453 /// effect on this object.
455
456 /// Set the quadruplet of default severity threshold level attributes of
457 /// the `LoggerManagerDefaults` attribute of this object to the
458 /// specified `recordLevel`, `passLevel`, `triggerLevel`, and
459 /// `triggerAllLevel` values if each level is in the range `[0 .. 255]`.
460 /// Return 0 on success, and a non-zero value otherwise with no effect
461 /// on this object.
463 int passLevel,
464 int triggerLevel,
465 int triggerAllLevel);
466
467 /// Set the user-fields populator callback attribute of this object to
468 /// the specified `populatorCallback`.
470 const UserFieldsPopulatorCallback& populatorCallback);
471
472 /// Set the category name-filter callback functor attribute of this
473 /// object to the specified `nameFilter`. Note that this method cannot
474 /// fail, and that `nameFilter` can be a "null" (i.e., unpopulated)
475 /// functor object.
477 const CategoryNameFilterCallback& nameFilter);
478
479 /// Set the default thresholds callback functor attribute of this object
480 /// to the specified `thresholdsCb`. Note that this method cannot fail,
481 /// and that `thresholdsCb` can be a "null" (i.e., unpopulated) functor
482 /// object.
484 const DefaultThresholdLevelsCallback& thresholdsCb);
485
486 /// Set the log order attribute of this object to the specified `value`.
488
489 /// Set the trigger marker attribute of this object to the specified
490 /// `value`.
492
493 // ACCESSORS
494
495 /// Return a reference to the non-modifiable defaults object attribute
496 /// of this object.
498
499 /// Return the default-logger record-buffer size attribute of the
500 /// `LoggerManagerDefaults` attribute of this object.
502
503 /// Return the default logger-message-buffer size attribute of the
504 /// `LoggerManagerDefaults` attribute of this object.
506
507 /// Return the default Record threshold level attribute of the
508 /// `LoggerManagerDefaults` attribute of this object.
510
511 /// Return the default Pass threshold level attribute of the
512 /// `LoggerManagerDefaults` attribute of this object.
513 int defaultPassLevel() const;
514
515 /// Return the default Trigger threshold level attribute of the
516 /// `LoggerManagerDefaults` attribute of this object.
518
519 /// Return the default Trigger-All threshold level attribute of the
520 /// `LoggerManagerDefaults` attribute of this object.
522
523 /// Return a reference providing non-modifiable access to the
524 /// user-fields populator functor attribute of this object.
526
527 /// Return a reference to the non-modifiable category name filter
528 /// functor attribute of this object.
530
531 /// Return a reference to the non-modifiable default severity-level
532 /// thresholds functor attribute of this object.
535
536 /// Return the log order attribute of this object. See attributes
537 /// description for effects of the log order.
539
540 /// Return the trigger marker attribute of this object. See attributes
541 /// description for effects of the trigger markers.
543
544 /// Format a reasonable representation of this object to the specified
545 /// output `stream` at the (absolute value of) the optionally specified
546 /// indentation `level` and return a reference to `stream`. If `level`
547 /// is specified, optionally specify `spacesPerLevel`, the number of
548 /// spaces per indentation level for this and all of its nested objects.
549 /// If `level` is negative, suppress indentation of the first line. If
550 /// `spacesPerLevel` is negative, suppress all indentation AND format
551 /// the entire output on one line. If `stream` is not valid on entry,
552 /// this operation has no effect. The format will indicate whether the
553 /// contained functors are or are not "null", but will not otherwise
554 /// attempt to represent functor "values".
555 bsl::ostream& print(bsl::ostream& stream,
556 int level = 0,
557 int spacesPerLevel = 4) const;
558};
559
560// FREE OPERATORS
561
562/// Return `true` if the specified `lhs` and `rhs` attribute objects have
563/// the same (in-core) value, and `false` otherwise. Two attribute objects
564/// objects have the same in-core value if each respective attribute has the
565/// same in-core value. Note that functor attributes must have identically
566/// the same representation to have the same in-core value.
567bool operator==(const LoggerManagerConfiguration& lhs,
568 const LoggerManagerConfiguration& rhs);
569
570/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
571/// have the same (in-core) value, and `false` otherwise. Two attribute
572/// objects do not have the same in-core value if one or more respective
573/// attributes differ in in-core values. Note that functor attributes will
574/// have different in-core values if their representations are not
575/// identical.
576bool operator!=(const LoggerManagerConfiguration& lhs,
577 const LoggerManagerConfiguration& rhs);
578
579/// Write a reasonable representation of the specified `configuration`
580/// object to the specified output `stream`, indicating whether the
581/// contained functors are or are not "null".
582bsl::ostream& operator<<(bsl::ostream& stream,
583 const LoggerManagerConfiguration& configuration);
584
585} // close package namespace
586
587
588#endif
589
590// ----------------------------------------------------------------------------
591// Copyright 2015 Bloomberg Finance L.P.
592//
593// Licensed under the Apache License, Version 2.0 (the "License");
594// you may not use this file except in compliance with the License.
595// You may obtain a copy of the License at
596//
597// http://www.apache.org/licenses/LICENSE-2.0
598//
599// Unless required by applicable law or agreed to in writing, software
600// distributed under the License is distributed on an "AS IS" BASIS,
601// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
602// See the License for the specific language governing permissions and
603// limitations under the License.
604// ----------------------------- END-OF-FILE ----------------------------------
605
606/** @} */
607/** @} */
608/** @} */
Definition ball_loggermanagerconfiguration.h:281
LoggerManagerConfiguration & operator=(const LoggerManagerConfiguration &rhs)
const LoggerManagerDefaults & defaults() const
bsl::function< void(bsl::string *, const char *)> CategoryNameFilterCallback
Definition ball_loggermanagerconfiguration.h:295
static bool areValidDefaultThresholdLevels(int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
void setDefaultThresholdLevelsCallback(const DefaultThresholdLevelsCallback &thresholdsCb)
int setDefaultThresholdLevelsIfValid(int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
~LoggerManagerConfiguration()=default
Destroy this object.
void setUserFieldsPopulatorCallback(const UserFieldsPopulatorCallback &populatorCallback)
friend bool operator==(const LoggerManagerConfiguration &, const LoggerManagerConfiguration &)
BSLMF_NESTED_TRAIT_DECLARATION(LoggerManagerConfiguration, bslma::UsesBslmaAllocator)
TriggerMarkers
Definition ball_loggermanagerconfiguration.h:326
@ BEGIN_END_MARKERS
Definition ball_loggermanagerconfiguration.h:337
@ e_BEGIN_END_MARKERS
Definition ball_loggermanagerconfiguration.h:329
@ e_NO_MARKERS
Definition ball_loggermanagerconfiguration.h:327
@ BAEL_BEGIN_END_MARKERS
Definition ball_loggermanagerconfiguration.h:334
@ BAEL_NO_MARKERS
Definition ball_loggermanagerconfiguration.h:333
@ NO_MARKERS
Definition ball_loggermanagerconfiguration.h:336
const DefaultThresholdLevelsCallback & defaultThresholdLevelsCallback() const
TriggerMarkers triggerMarkers() const
friend bsl::ostream & operator<<(bsl::ostream &, const LoggerManagerConfiguration &)
void setCategoryNameFilterCallback(const CategoryNameFilterCallback &nameFilter)
const UserFieldsPopulatorCallback & userFieldsPopulatorCallback() const
bsl::function< void(int *, int *, int *, int *, const char *)> DefaultThresholdLevelsCallback
Definition ball_loggermanagerconfiguration.h:301
const CategoryNameFilterCallback & categoryNameFilterCallback() const
static bool isValidDefaultRecordBufferSize(int numBytes)
static bool isValidDefaultLoggerBufferSize(int numBytes)
LoggerManagerConfiguration(bslma::Allocator *basicAllocator=0)
int setDefaultLoggerBufferSizeIfValid(int numBytes)
void setLogOrder(LogOrder value)
Set the log order attribute of this object to the specified value.
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
void setDefaultValues(const LoggerManagerDefaults &defaults)
int setDefaultThresholdLevelsIfValid(int passLevel)
LoggerManagerConfiguration(const LoggerManagerConfiguration &original, bslma::Allocator *basicAllocator=0)
bsl::function< void(ball::UserFields *)> UserFieldsPopulatorCallback
Definition ball_loggermanagerconfiguration.h:290
LogOrder
Definition ball_loggermanagerconfiguration.h:303
@ e_FIFO
Definition ball_loggermanagerconfiguration.h:308
@ BAEL_FIFO
Definition ball_loggermanagerconfiguration.h:312
@ LIFO
Definition ball_loggermanagerconfiguration.h:315
@ BAEL_LIFO
Definition ball_loggermanagerconfiguration.h:313
@ FIFO
Definition ball_loggermanagerconfiguration.h:314
@ e_LIFO
Definition ball_loggermanagerconfiguration.h:309
void setTriggerMarkers(TriggerMarkers value)
int setDefaultRecordBufferSizeIfValid(int numBytes)
Definition ball_loggermanagerdefaults.h:204
Definition ball_userfields.h:136
Definition bslstl_string.h:1281
Forward declaration.
Definition bslstl_function.h:934
Definition bslma_allocator.h:457
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition ball_administration.h:214
bsl::ostream & operator<<(bsl::ostream &output, const Attribute &attribute)
Definition bslma_usesbslmaallocator.h:343