145 lines
3.5 KiB
C
145 lines
3.5 KiB
C
|
/******************************************************************************
|
||
|
*
|
||
|
* This file is part of Log4Qt library.
|
||
|
*
|
||
|
* Copyright (C) 2007 - 2020 Log4Qt contributors
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
#ifndef LOG4QT_LEVEL_H
|
||
|
#define LOG4QT_LEVEL_H
|
||
|
|
||
|
#include "log4qt.h"
|
||
|
|
||
|
#include <QString>
|
||
|
#include <QMetaType>
|
||
|
|
||
|
namespace Log4Qt
|
||
|
{
|
||
|
|
||
|
/*!
|
||
|
* \brief The class Level defines the level of a logging event.
|
||
|
*
|
||
|
* \note All the functions declared in this class are thread-safe.
|
||
|
*/
|
||
|
class LOG4QT_EXPORT Level
|
||
|
{
|
||
|
public:
|
||
|
// Comparisson operators rely on the order:
|
||
|
// NULL_INT < ALL_INT < TRACE_INT < ...
|
||
|
// Serialisation uses unsigned 8 bit int
|
||
|
|
||
|
/*!
|
||
|
* The enumeration Value contains all possible Level values.
|
||
|
*/
|
||
|
enum Value
|
||
|
{
|
||
|
/*! NULL_INT is used for no level has been specified */
|
||
|
NULL_INT = 0,
|
||
|
ALL_INT = 32,
|
||
|
TRACE_INT = 64,
|
||
|
DEBUG_INT = 96,
|
||
|
INFO_INT = 128,
|
||
|
WARN_INT = 150,
|
||
|
ERROR_INT = 182,
|
||
|
FATAL_INT = 214,
|
||
|
OFF_INT = 255
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
Level(Value value = NULL_INT)
|
||
|
: mValue(value)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
int syslogEquivalent() const;
|
||
|
int toInt() const
|
||
|
{
|
||
|
return mValue;
|
||
|
}
|
||
|
|
||
|
bool operator==(const Level other) const
|
||
|
{
|
||
|
return mValue == other.mValue;
|
||
|
}
|
||
|
|
||
|
bool operator!=(const Level other) const
|
||
|
{
|
||
|
return mValue != other.mValue;
|
||
|
}
|
||
|
|
||
|
bool operator<(const Level other) const
|
||
|
{
|
||
|
return mValue < other.mValue;
|
||
|
}
|
||
|
|
||
|
bool operator<=(const Level other) const
|
||
|
{
|
||
|
return mValue <= other.mValue;
|
||
|
}
|
||
|
|
||
|
bool operator>(const Level other) const
|
||
|
{
|
||
|
return mValue > other.mValue;
|
||
|
}
|
||
|
|
||
|
bool operator>=(const Level other) const
|
||
|
{
|
||
|
return mValue >= other.mValue;
|
||
|
}
|
||
|
QString toString() const;
|
||
|
|
||
|
static Level fromString(const QString &level, bool *ok = nullptr);
|
||
|
|
||
|
private:
|
||
|
volatile Value mValue;
|
||
|
|
||
|
#ifndef QT_NO_DATASTREAM
|
||
|
// Needs to be friend to stream objects
|
||
|
friend LOG4QT_EXPORT QDataStream &operator<<(QDataStream &out,
|
||
|
Log4Qt::Level level);
|
||
|
friend LOG4QT_EXPORT QDataStream &operator>>(QDataStream &in,
|
||
|
Level &level);
|
||
|
#endif // QT_NO_DATASTREAM
|
||
|
};
|
||
|
|
||
|
#ifndef QT_NO_DATASTREAM
|
||
|
/*!
|
||
|
* \relates Level
|
||
|
*
|
||
|
* Writes the given error \a rLevel to the given stream \a rStream,
|
||
|
* and returns a reference to the stream.
|
||
|
*/
|
||
|
LOG4QT_EXPORT QDataStream &operator<<(QDataStream &out,
|
||
|
Log4Qt::Level level);
|
||
|
|
||
|
/*!
|
||
|
* \relates Level
|
||
|
*
|
||
|
* Reads an error from the given stream \a rStream into the given
|
||
|
* error \a rLevel, and returns a reference to the stream.
|
||
|
*/
|
||
|
LOG4QT_EXPORT QDataStream &operator>>(QDataStream &in,
|
||
|
Level &level);
|
||
|
#endif // QT_NO_DATASTREAM
|
||
|
|
||
|
} // namespace Log4Qt
|
||
|
|
||
|
Q_DECLARE_METATYPE(Log4Qt::Level)
|
||
|
Q_DECLARE_TYPEINFO(Log4Qt::Level, Q_MOVABLE_TYPE);
|
||
|
|
||
|
|
||
|
#endif // LOG4QT_LEVEL_H
|