summaryrefslogtreecommitdiff
path: root/indra/llcommon/llerrorcontrol.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcommon/llerrorcontrol.h')
-rw-r--r--indra/llcommon/llerrorcontrol.h322
1 files changed, 161 insertions, 161 deletions
diff --git a/indra/llcommon/llerrorcontrol.h b/indra/llcommon/llerrorcontrol.h
index 77b187a80f..bf5a6df556 100644
--- a/indra/llcommon/llerrorcontrol.h
+++ b/indra/llcommon/llerrorcontrol.h
@@ -38,143 +38,143 @@
class LLSD;
/*
- This is the part of the LLError namespace that manages the messages
- produced by the logging. The logging support is defined in llerror.h.
- Most files do not need to include this.
+ This is the part of the LLError namespace that manages the messages
+ produced by the logging. The logging support is defined in llerror.h.
+ Most files do not need to include this.
- These implementations are in llerror.cpp.
+ These implementations are in llerror.cpp.
*/
// Line buffer interface
class LLLineBuffer
{
public:
- LLLineBuffer() {};
- virtual ~LLLineBuffer() {};
+ LLLineBuffer() {};
+ virtual ~LLLineBuffer() {};
- virtual void clear() = 0; // Clear the buffer, and reset it.
+ virtual void clear() = 0; // Clear the buffer, and reset it.
- virtual void addLine(const std::string& utf8line) = 0;
+ virtual void addLine(const std::string& utf8line) = 0;
};
namespace LLError
{
- LL_COMMON_API void initForApplication(const std::string& user_dir, const std::string& app_dir, bool log_to_stderr = true);
- // resets all logging settings to defaults needed by applicaitons
- // logs to stderr and windows debug log
- // sets up log configuration from the file logcontrol.xml in dir
+ LL_COMMON_API void initForApplication(const std::string& user_dir, const std::string& app_dir, bool log_to_stderr = true);
+ // resets all logging settings to defaults needed by applicaitons
+ // logs to stderr and windows debug log
+ // sets up log configuration from the file logcontrol.xml in dir
- /*
- Settings that control what is logged.
- Setting a level means log messages at that level or above.
- */
+ /*
+ Settings that control what is logged.
+ Setting a level means log messages at that level or above.
+ */
- LL_COMMON_API void setPrintLocation(bool);
- LL_COMMON_API void setDefaultLevel(LLError::ELevel);
- LL_COMMON_API ELevel getDefaultLevel();
- LL_COMMON_API void setAlwaysFlush(bool flush);
+ LL_COMMON_API void setPrintLocation(bool);
+ LL_COMMON_API void setDefaultLevel(LLError::ELevel);
+ LL_COMMON_API ELevel getDefaultLevel();
+ LL_COMMON_API void setAlwaysFlush(bool flush);
LL_COMMON_API bool getAlwaysFlush();
- LL_COMMON_API void setEnabledLogTypesMask(U32 mask);
- LL_COMMON_API U32 getEnabledLogTypesMask();
- LL_COMMON_API void setFunctionLevel(const std::string& function_name, LLError::ELevel);
- LL_COMMON_API void setClassLevel(const std::string& class_name, LLError::ELevel);
- LL_COMMON_API void setFileLevel(const std::string& file_name, LLError::ELevel);
- LL_COMMON_API void setTagLevel(const std::string& file_name, LLError::ELevel);
-
- LL_COMMON_API LLError::ELevel decodeLevel(std::string name);
- LL_COMMON_API void configure(const LLSD&);
- // the LLSD can configure all of the settings
- // usually read automatically from the live errorlog.xml file
-
-
- /*
- Control functions.
- */
-
- typedef boost::function<void(const std::string&)> FatalFunction;
-
- LL_COMMON_API void setFatalFunction(const FatalFunction&);
- // The fatal function will be called after an message of LEVEL_ERROR
- // is logged. Note: supressing a LEVEL_ERROR message from being logged
- // (by, for example, setting a class level to LEVEL_NONE), will keep
- // that message from causing the fatal function to be invoked.
- // The passed FatalFunction will be the LAST log function called
- // before LL_ERRS crashes its caller. A FatalFunction can throw an
- // exception, or call exit(), to bypass the crash. It MUST disrupt the
- // flow of control because no caller expects LL_ERRS to return.
-
- LL_COMMON_API FatalFunction getFatalFunction();
- // Retrieve the previously-set FatalFunction
-
- LL_COMMON_API std::string getFatalMessage();
- // Retrieve the message last passed to FatalFunction, if any
-
- /// temporarily override the FatalFunction for the duration of a
- /// particular scope, e.g. for unit tests
- class LL_COMMON_API OverrideFatalFunction
- {
- public:
- OverrideFatalFunction(const FatalFunction& func):
- mPrev(getFatalFunction())
- {
- setFatalFunction(func);
- }
- ~OverrideFatalFunction()
- {
- setFatalFunction(mPrev);
- }
-
- private:
- FatalFunction mPrev;
- };
-
- typedef std::string (*TimeFunction)();
- LL_COMMON_API std::string utcTime();
-
- LL_COMMON_API void setTimeFunction(TimeFunction);
- // The function is use to return the current time, formatted for
- // display by those error recorders that want the time included.
-
-
-
- class LL_COMMON_API Recorder
- {
- // An object that handles the actual output or error messages.
- public:
- Recorder();
- virtual ~Recorder();
-
- virtual void recordMessage(LLError::ELevel, const std::string& message) = 0;
- // use the level for better display, not for filtering
-
- virtual bool enabled() { return true; }
-
- bool wantsTime();
- bool wantsTags();
- bool wantsLevel();
- bool wantsLocation();
- bool wantsFunctionName();
- bool wantsMultiline();
-
- void showTime(bool show);
- void showTags(bool show);
- void showLevel(bool show);
- void showLocation(bool show);
- void showFunctionName(bool show);
- void showMultiline(bool show);
-
- protected:
- bool mWantsTime;
- bool mWantsTags;
- bool mWantsLevel;
- bool mWantsLocation;
- bool mWantsFunctionName;
- bool mWantsMultiline;
- };
-
- typedef std::shared_ptr<Recorder> RecorderPtr;
+ LL_COMMON_API void setEnabledLogTypesMask(U32 mask);
+ LL_COMMON_API U32 getEnabledLogTypesMask();
+ LL_COMMON_API void setFunctionLevel(const std::string& function_name, LLError::ELevel);
+ LL_COMMON_API void setClassLevel(const std::string& class_name, LLError::ELevel);
+ LL_COMMON_API void setFileLevel(const std::string& file_name, LLError::ELevel);
+ LL_COMMON_API void setTagLevel(const std::string& file_name, LLError::ELevel);
+
+ LL_COMMON_API LLError::ELevel decodeLevel(std::string name);
+ LL_COMMON_API void configure(const LLSD&);
+ // the LLSD can configure all of the settings
+ // usually read automatically from the live errorlog.xml file
+
+
+ /*
+ Control functions.
+ */
+
+ typedef boost::function<void(const std::string&)> FatalFunction;
+
+ LL_COMMON_API void setFatalFunction(const FatalFunction&);
+ // The fatal function will be called after an message of LEVEL_ERROR
+ // is logged. Note: supressing a LEVEL_ERROR message from being logged
+ // (by, for example, setting a class level to LEVEL_NONE), will keep
+ // that message from causing the fatal function to be invoked.
+ // The passed FatalFunction will be the LAST log function called
+ // before LL_ERRS crashes its caller. A FatalFunction can throw an
+ // exception, or call exit(), to bypass the crash. It MUST disrupt the
+ // flow of control because no caller expects LL_ERRS to return.
+
+ LL_COMMON_API FatalFunction getFatalFunction();
+ // Retrieve the previously-set FatalFunction
+
+ LL_COMMON_API std::string getFatalMessage();
+ // Retrieve the message last passed to FatalFunction, if any
+
+ /// temporarily override the FatalFunction for the duration of a
+ /// particular scope, e.g. for unit tests
+ class LL_COMMON_API OverrideFatalFunction
+ {
+ public:
+ OverrideFatalFunction(const FatalFunction& func):
+ mPrev(getFatalFunction())
+ {
+ setFatalFunction(func);
+ }
+ ~OverrideFatalFunction()
+ {
+ setFatalFunction(mPrev);
+ }
+
+ private:
+ FatalFunction mPrev;
+ };
+
+ typedef std::string (*TimeFunction)();
+ LL_COMMON_API std::string utcTime();
+
+ LL_COMMON_API void setTimeFunction(TimeFunction);
+ // The function is use to return the current time, formatted for
+ // display by those error recorders that want the time included.
+
+
+
+ class LL_COMMON_API Recorder
+ {
+ // An object that handles the actual output or error messages.
+ public:
+ Recorder();
+ virtual ~Recorder();
+
+ virtual void recordMessage(LLError::ELevel, const std::string& message) = 0;
+ // use the level for better display, not for filtering
+
+ virtual bool enabled() { return true; }
+
+ bool wantsTime();
+ bool wantsTags();
+ bool wantsLevel();
+ bool wantsLocation();
+ bool wantsFunctionName();
+ bool wantsMultiline();
+
+ void showTime(bool show);
+ void showTags(bool show);
+ void showLevel(bool show);
+ void showLocation(bool show);
+ void showFunctionName(bool show);
+ void showMultiline(bool show);
+
+ protected:
+ bool mWantsTime;
+ bool mWantsTags;
+ bool mWantsLevel;
+ bool mWantsLocation;
+ bool mWantsFunctionName;
+ bool mWantsMultiline;
+ };
+
+ typedef std::shared_ptr<Recorder> RecorderPtr;
/**
* Instantiate GenericRecorder with a callable(level, message) to get
@@ -197,48 +197,48 @@ namespace LLError
CALLABLE mCallable;
};
- /**
- * @NOTE: addRecorder() and removeRecorder() uses the boost::shared_ptr to allow for shared ownership
- * while still ensuring that the allocated memory is eventually freed
- */
- LL_COMMON_API void addRecorder(RecorderPtr);
- LL_COMMON_API void removeRecorder(RecorderPtr);
- // each error message is passed to each recorder via recordMessage()
- /**
- * Call addGenericRecorder() with a callable(level, message) to get
- * control on every log message without having to code an explicit
- * Recorder subclass. Save the returned RecorderPtr if you later want to
- * call removeRecorder().
- */
- template <typename CALLABLE>
- RecorderPtr addGenericRecorder(const CALLABLE& callable)
- {
- RecorderPtr ptr{ new GenericRecorder<CALLABLE>(callable) };
- addRecorder(ptr);
- return ptr;
- }
-
- LL_COMMON_API void logToFile(const std::string& filename);
- LL_COMMON_API void logToStderr();
- LL_COMMON_API void logToFixedBuffer(LLLineBuffer*);
- // Utilities to add recorders for logging to a file or a fixed buffer
- // A second call to the same function will remove the logger added
- // with the first.
- // Passing the empty string or NULL to just removes any prior.
- LL_COMMON_API std::string logFileName();
- // returns name of current logging file, empty string if none
-
-
- /*
- Utilities for use by the unit tests of LLError itself.
- */
-
- typedef LLPointer<LLRefCount> SettingsStoragePtr;
- LL_COMMON_API SettingsStoragePtr saveAndResetSettings();
- LL_COMMON_API void restoreSettings(SettingsStoragePtr pSettingsStorage);
-
- LL_COMMON_API std::string abbreviateFile(const std::string& filePath);
- LL_COMMON_API int shouldLogCallCount();
+ /**
+ * @NOTE: addRecorder() and removeRecorder() uses the boost::shared_ptr to allow for shared ownership
+ * while still ensuring that the allocated memory is eventually freed
+ */
+ LL_COMMON_API void addRecorder(RecorderPtr);
+ LL_COMMON_API void removeRecorder(RecorderPtr);
+ // each error message is passed to each recorder via recordMessage()
+ /**
+ * Call addGenericRecorder() with a callable(level, message) to get
+ * control on every log message without having to code an explicit
+ * Recorder subclass. Save the returned RecorderPtr if you later want to
+ * call removeRecorder().
+ */
+ template <typename CALLABLE>
+ RecorderPtr addGenericRecorder(const CALLABLE& callable)
+ {
+ RecorderPtr ptr{ new GenericRecorder<CALLABLE>(callable) };
+ addRecorder(ptr);
+ return ptr;
+ }
+
+ LL_COMMON_API void logToFile(const std::string& filename);
+ LL_COMMON_API void logToStderr();
+ LL_COMMON_API void logToFixedBuffer(LLLineBuffer*);
+ // Utilities to add recorders for logging to a file or a fixed buffer
+ // A second call to the same function will remove the logger added
+ // with the first.
+ // Passing the empty string or NULL to just removes any prior.
+ LL_COMMON_API std::string logFileName();
+ // returns name of current logging file, empty string if none
+
+
+ /*
+ Utilities for use by the unit tests of LLError itself.
+ */
+
+ typedef LLPointer<LLRefCount> SettingsStoragePtr;
+ LL_COMMON_API SettingsStoragePtr saveAndResetSettings();
+ LL_COMMON_API void restoreSettings(SettingsStoragePtr pSettingsStorage);
+
+ LL_COMMON_API std::string abbreviateFile(const std::string& filePath);
+ LL_COMMON_API int shouldLogCallCount();
};
#endif // LL_LLERRORCONTROL_H