BDE 4.39.x 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 `initialize` 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
247
248#include <bslma_allocator.h>
250
252
253#include <bsl_functional.h>
254#include <bsl_iosfwd.h>
255#include <bsl_string.h>
256
257
258namespace ball {
259
260class UserFields;
261
262 // ================================
263 // class LoggerManagerConfiguration
264 // ================================
265
266/// This class provides constrained configuration parameters for a logger
267/// manager. The constraints are maintained as class invariants; it is not
268/// possible to obtain an invalid object through this interface.
269///
270/// This class support *in-core* *value-semantic* operations, including
271/// copy construction, assignment, and equality comparison; `ostream`
272/// printing is supported, but in a modified form to handle functors, and
273/// BDEX serialization cannot be supported at all. (A precise operational
274/// definition of when two instances have the same (in-core) value can be
275/// found in the description of `operator==` for the class.) This class is
276/// *exception* *neutral* with no guarantee of rollback: If an exception is
277/// thrown during the invocation of a method on a pre-existing instance, the
278/// object is left in a valid state, but its value is undefined. In no
279/// event is memory leaked. Finally, *aliasing* (e.g., using all or part of
280/// an object as both source and destination) is supported in all cases.
281///
282/// See @ref ball_loggermanagerconfiguration
284
285 public:
286 // PUBLIC TYPES
287
288 /// `UserFieldsPopulatorCallback` is the type of a user-supplied
289 /// callback functor used to populate the user-defined fields in each
290 /// log record.
291 typedef bsl::function<void(ball::UserFields *)>
293
294 /// `CategoryNameFilterCallback` is the type of the user-supplied
295 /// functor that translates external category names to internal names.
297
298 /// `DefaultThresholdLevelsCallback` is the type of the functor that
299 /// determines default threshold levels for categories added to the
300 /// registry by the `setCategory(const char *)` method.
303
304 enum LogOrder {
305 // The 'LogOrder' enumeration defines the order in which messages will
306 // be published to the underlying observer in the case of Trigger and
307 // Trigger-All events.
308
309 e_FIFO, // oldest logged messages are published first
310 e_LIFO // newest logged messages are published first
311
312#ifndef BDE_OMIT_INTERNAL_DEPRECATED
317#endif // BDE_OMIT_INTERNAL_DEPRECATED
318 };
319
320 /// The `TriggerMarkers` enumeration defines whether text will be
321 /// written to the log to indicate whether a series of log records were
322 /// logged due to either a Trigger or Trigger-All event. If this
323 /// attribute is `e_BEGIN_END_MARKERS`, then "BEGIN RECORD DUMP" and
324 /// "END RECORD DUMP" will be written before and after each sequence of
325 /// records logged due to a Trigger or Trigger-All event. The default
326 /// value of this attribute is `e_BEGIN_END_MARKERS`.
328 e_NO_MARKERS, // don't print any markers
329
330 e_BEGIN_END_MARKERS // print "BEGIN RECORD DUMP" and
331 // "END RECORD DUMP" markers (default)
332
333#ifndef BDE_OMIT_INTERNAL_DEPRECATED
336
339#endif // BDE_OMIT_INTERNAL_DEPRECATED
340 };
341
342 private:
343 // DATA
344 LoggerManagerDefaults d_defaults; // default buffer size for
345 // logger (for macros) and
346 // set of constrained default
347 // severity threshold levels
348 // for logger manager
349
351 d_userPopulator; // user callback to add
352 // optional user-defined
353 // fields to a log record
354
356 d_categoryNameFilter; // callback to modify input
357 // category names for
358 // internal storage
359
361 d_defaultThresholdsCb; // callback to supply default
362 // severity thresholds for
363 // categories
364
365 LogOrder d_logOrder; // logging order
366
367 TriggerMarkers d_triggerMarkers; // trigger marker
368
369 bslma::Allocator *d_allocator_p; // memory allocator (held,
370 // not owned)
371
372 // FRIENDS
373 friend bsl::ostream& operator<<(bsl::ostream&,
375
378
379 public:
380 // CLASS METHODS
381
382 /// Return `true` if the specified `numBytes` is a valid default-logger
383 /// record-buffer size value, and `false` otherwise. `numBytes` is
384 /// valid if `0 < numBytes`.
385 static bool isValidDefaultRecordBufferSize(int numBytes);
386
387 /// Return `true` if the specified `numBytes` is a valid default
388 /// logger-message-buffer size value, and `false` otherwise. `numBytes`
389 /// is valid if `0 < numBytes`.
390 static bool isValidDefaultLoggerBufferSize(int numBytes);
391
392 /// Return `true` if each of the specified `recordLevel`, `passLevel`,
393 /// `triggerLevel`, and `triggerAllLevel` values is a valid default
394 /// severity threshold level, and `false` otherwise. Valid severity
395 /// threshold levels are in the range `[0 .. 255]`.
396 static bool areValidDefaultThresholdLevels(int recordLevel,
397 int passLevel,
398 int triggerLevel,
399 int triggerAllLevel);
400
401 // TRAITS
404
405 // CREATORS
406
407 /// Create a logger manager configuration constrained-attribute object
408 /// having valid default values for all attributes. Optionally specify
409 /// a `basicAllocator` used to supply memory. If `basicAllocator` is 0,
410 /// the currently installed default allocator is used.
411 explicit LoggerManagerConfiguration(bslma::Allocator *basicAllocator = 0);
412
413 /// Create a logger manager configuration constrained-attribute object
414 /// having the in-core value of the specified `original` object.
415 /// Optionally specify a `basicAllocator` used to supply memory. If
416 /// `basicAllocator` is 0, the currently installed default allocator is
417 /// used.
419 const LoggerManagerConfiguration& original,
420 bslma::Allocator *basicAllocator = 0);
421
422 /// Destroy this object.
424
425 // MANIPULATORS
426
427 /// Assign to this logger manager configuration constrained-attribute
428 /// object the in-core value of the specified `rhs` object.
430 const LoggerManagerConfiguration& rhs);
431
432 /// Set the default values attribute of this object to the specified `defaults`.
433 ///
434 /// \note Note that, since `defaults` is itself a
435 /// constrained-attribute object, this method cannot fail.
437
438 /// Set the default-logger record-buffer size attribute of the
439 /// `LoggerManagerDefaults` attribute of this object to the specified
440 /// `numBytes` if `0 < numBytes`. Return 0 on success, and a non-zero
441 /// value otherwise with no effect on this object.
443
444 /// Set the default logger-message-buffer size attribute of the
445 /// `LoggerManagerDefaults` attribute of this object to the specified
446 /// `numBytes` if `0 < numBytes`. Return 0 on success, and a non-zero
447 /// value otherwise with no effect on this object.
449
450 /// Set the passthrough severity threshold level attribute of the
451 /// `LoggerManagerDefaults` attribute of this object to the specified
452 /// `passLevel`, if it is in the range `[0 .. 255]`, and set all the
453 /// other threshold levels (recordLevel, triggerLevel, triggerAllLevel)
454 /// to 0. Return 0 on success, and a non-zero value otherwise with no
455 /// effect on this object.
457
458 /// Set the quadruplet of default severity threshold level attributes of
459 /// the `LoggerManagerDefaults` attribute of this object to the
460 /// specified `recordLevel`, `passLevel`, `triggerLevel`, and
461 /// `triggerAllLevel` values if each level is in the range `[0 .. 255]`.
462 /// Return 0 on success, and a non-zero value otherwise with no effect
463 /// on this object.
465 int passLevel,
466 int triggerLevel,
467 int triggerAllLevel);
468
469 /// Set the user-fields populator callback attribute of this object to
470 /// the specified `populatorCallback`.
472 const UserFieldsPopulatorCallback& populatorCallback);
473
474 /// Set the category name-filter callback functor attribute of this object to the specified `nameFilter`.
475 ///
476 /// \note Note that this method cannot
477 /// fail, and that `nameFilter` can be a "null" (i.e., unpopulated)
478 /// functor object.
480 const CategoryNameFilterCallback& nameFilter);
481
482 /// Set the default thresholds callback functor attribute of this object to the specified `thresholdsCb`.
483 ///
484 /// \note Note that this method cannot fail,
485 /// and that `thresholdsCb` can be a "null" (i.e., unpopulated) functor
486 /// object.
488 const DefaultThresholdLevelsCallback& thresholdsCb);
489
490 /// Set the log order attribute of this object to the specified `value`.
492
493 /// Set the trigger marker attribute of this object to the specified
494 /// `value`.
496
497 // ACCESSORS
498
499 /// Return a reference to the non-modifiable defaults object attribute
500 /// of this object.
502
503 /// Return the default-logger record-buffer size attribute of the
504 /// `LoggerManagerDefaults` attribute of this object.
506
507 /// Return the default logger-message-buffer size attribute of the
508 /// `LoggerManagerDefaults` attribute of this object.
510
511 /// Return the default Record threshold level attribute of the
512 /// `LoggerManagerDefaults` attribute of this object.
514
515 /// Return the default Pass threshold level attribute of the
516 /// `LoggerManagerDefaults` attribute of this object.
517 int defaultPassLevel() const;
518
519 /// Return the default Trigger threshold level attribute of the
520 /// `LoggerManagerDefaults` attribute of this object.
522
523 /// Return the default Trigger-All threshold level attribute of the
524 /// `LoggerManagerDefaults` attribute of this object.
526
527 /// Return a reference providing non-modifiable access to the
528 /// user-fields populator functor attribute of this object.
530
531 /// Return a reference to the non-modifiable category name filter
532 /// functor attribute of this object.
534
535 /// Return a reference to the non-modifiable default severity-level
536 /// thresholds functor attribute of this object.
539
540 /// Return the log order attribute of this object. See attributes
541 /// description for effects of the log order.
543
544 /// Return the trigger marker attribute of this object. See attributes
545 /// description for effects of the trigger markers.
547
548 /// Format a reasonable representation of this object to the specified
549 /// output `stream` at the (absolute value of) the optionally specified
550 /// indentation `level` and return a reference to `stream`. If `level`
551 /// is specified, optionally specify `spacesPerLevel`, the number of
552 /// spaces per indentation level for this and all of its nested objects.
553 /// If `level` is negative, suppress indentation of the first line. If
554 /// `spacesPerLevel` is negative, suppress all indentation AND format
555 /// the entire output on one line. If `stream` is not valid on entry,
556 /// this operation has no effect. The format will indicate whether the
557 /// contained functors are or are not "null", but will not otherwise
558 /// attempt to represent functor "values".
559 bsl::ostream& print(bsl::ostream& stream,
560 int level = 0,
561 int spacesPerLevel = 4) const;
562};
563
564// FREE OPERATORS
565
566/// Return `true` if the specified `lhs` and `rhs` attribute objects have
567/// the same (in-core) value, and `false` otherwise. Two attribute objects
568/// objects have the same in-core value if each respective attribute has the same in-core value.
569///
570/// \note Note that functor attributes must have identically
571/// the same representation to have the same in-core value.
572bool operator==(const LoggerManagerConfiguration& lhs,
573 const LoggerManagerConfiguration& rhs);
574
575/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
576/// have the same (in-core) value, and `false` otherwise. Two attribute
577/// objects do not have the same in-core value if one or more respective attributes differ in in-core values.
578///
579/// \note Note that functor attributes will
580/// have different in-core values if their representations are not
581/// identical.
582bool operator!=(const LoggerManagerConfiguration& lhs,
583 const LoggerManagerConfiguration& rhs);
584
585/// Write a reasonable representation of the specified `configuration`
586/// object to the specified output `stream`, indicating whether the
587/// contained functors are or are not "null".
588bsl::ostream& operator<<(bsl::ostream& stream,
589 const LoggerManagerConfiguration& configuration);
590
591} // close package namespace
592
593
594#endif
595
596// ----------------------------------------------------------------------------
597// Copyright 2015 Bloomberg Finance L.P.
598//
599// Licensed under the Apache License, Version 2.0 (the "License");
600// you may not use this file except in compliance with the License.
601// You may obtain a copy of the License at
602//
603// http://www.apache.org/licenses/LICENSE-2.0
604//
605// Unless required by applicable law or agreed to in writing, software
606// distributed under the License is distributed on an "AS IS" BASIS,
607// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
608// See the License for the specific language governing permissions and
609// limitations under the License.
610// ----------------------------- END-OF-FILE ----------------------------------
611
612/** @} */
613/** @} */
614/** @} */
Definition ball_loggermanagerconfiguration.h:283
LoggerManagerConfiguration & operator=(const LoggerManagerConfiguration &rhs)
const LoggerManagerDefaults & defaults() const
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:327
@ BEGIN_END_MARKERS
Definition ball_loggermanagerconfiguration.h:338
@ e_BEGIN_END_MARKERS
Definition ball_loggermanagerconfiguration.h:330
@ e_NO_MARKERS
Definition ball_loggermanagerconfiguration.h:328
@ BAEL_BEGIN_END_MARKERS
Definition ball_loggermanagerconfiguration.h:335
@ BAEL_NO_MARKERS
Definition ball_loggermanagerconfiguration.h:334
@ NO_MARKERS
Definition ball_loggermanagerconfiguration.h:337
const DefaultThresholdLevelsCallback & defaultThresholdLevelsCallback() const
TriggerMarkers triggerMarkers() const
friend bsl::ostream & operator<<(bsl::ostream &, const LoggerManagerConfiguration &)
void setCategoryNameFilterCallback(const CategoryNameFilterCallback &nameFilter)
const UserFieldsPopulatorCallback & userFieldsPopulatorCallback() const
CategoryCallbacks::NameFilter CategoryNameFilterCallback
Definition ball_loggermanagerconfiguration.h:296
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)
CategoryCallbacks::DefaultThresholdLevels DefaultThresholdLevelsCallback
Definition ball_loggermanagerconfiguration.h:302
bsl::function< void(ball::UserFields *)> UserFieldsPopulatorCallback
Definition ball_loggermanagerconfiguration.h:292
LogOrder
Definition ball_loggermanagerconfiguration.h:304
@ e_FIFO
Definition ball_loggermanagerconfiguration.h:309
@ BAEL_FIFO
Definition ball_loggermanagerconfiguration.h:313
@ LIFO
Definition ball_loggermanagerconfiguration.h:316
@ BAEL_LIFO
Definition ball_loggermanagerconfiguration.h:314
@ FIFO
Definition ball_loggermanagerconfiguration.h:315
@ e_LIFO
Definition ball_loggermanagerconfiguration.h:310
void setTriggerMarkers(TriggerMarkers value)
int setDefaultRecordBufferSizeIfValid(int numBytes)
Definition ball_loggermanagerdefaults.h:204
Definition ball_userfields.h:136
Forward declaration.
Definition bslstl_function.h:946
Definition bslma_allocator.h:545
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition ball_administration.h:214
bsl::ostream & operator<<(bsl::ostream &output, const Attribute &attribute)
bsl::function< void(bsl::string *buffer, const char *categoryName)> NameFilter
Definition ball_categorycallbacks.h:173
Definition bslma_usesbslmaallocator.h:344