Remoto - VFS
|
A logger node with color formatting and different channels for message types. More...
#include <VFS_logger.h>
Public Member Functions | |
Q_INVOKABLE | VFS_logger (int logLevel, int logTime, QString adminAddress) |
VFS_logger constructor. More... | |
~VFS_logger () | |
virtual VFS_node * | find (VFS_request *r) |
This method will return this if the path is settings, otherwise VFS_node::find(). More... | |
Public Member Functions inherited from VFS_node | |
Q_INVOKABLE | VFS_node () |
The VFS_node constructor will add its instance to the VFS_node::__allNodes global node registry, observing thread safety rules. More... | |
virtual | ~VFS_node () |
VFS_node destructor. More... | |
virtual VFS_node * | append (QString name, VFS_node *node, bool containerCheck=true, QString user="server") |
Append a VFS_node as a child of this node. More... | |
QString | className () |
Return the class name of a node. More... | |
virtual VFS_request * | createRequest (VFS_request::requestType type, QString path, QString user="unknown", QJsonDocument data=QJsonDocument(), QJsonObject metadata=QJsonObject(), bool dontDelete=false) |
Create a new VFS_request with this object as _origin. More... | |
VFS_node * | find (QString path) |
Find a node by string path. More... | |
VFS_node * | findChildWithName (QString name) |
Check if a child with a given name exists. More... | |
virtual bool | isContainer () |
A VFS_node may have children. More... | |
virtual VFS_node * | mount () |
Mount this node. More... | |
virtual QString | reportDetails () |
Additional details for a generated report. More... | |
QString | uniqueChildName (QString name) |
Generate a unique child name. More... | |
virtual VFS_node * | unmount () |
Unmount this node. More... | |
virtual bool | validChildName (QString name) |
Check if a node name is valid. More... | |
Protected Slots | |
virtual void | applyDiff (VFS_request *t) |
Receive log information from a logging mechanism. More... | |
Protected Member Functions | |
virtual void | submit (VFS_request *r) |
Submit settings to this logger. More... | |
Protected Member Functions inherited from VFS_node | |
virtual void | aclDefaults (VFS_request *r) |
Return default values and features associated wth this node. More... | |
void | addACLDefault (QJsonObject &acl, bool value, QString description="") |
Add a default value to the acl object. More... | |
void | addACLFeature (QJsonObject &acl, QString feature, bool value, QString description="") |
Add a feature to the acl object. More... | |
void | addACLFeatureGroup (QJsonObject &acl, QString feature, QString group, bool value) |
Add a feature group to the acl object. More... | |
void | addACLFeatureUser (QJsonObject &acl, QString feature, QString user, bool value) |
Add a feature user to the acl object. More... | |
void | addACLGroup (QJsonObject &acl, QString group, bool value) |
Add a group to the acl object. More... | |
void | addACLUser (QJsonObject &acl, QString user, bool value) |
Add a user to the acl object. More... | |
virtual QByteArray | icon () |
Fetch the icon for a node. More... | |
virtual void | issueRequest (VFS_node *target, VFS_request *t) |
Issue a VFS_request to its target. More... | |
virtual void | issueRequest (VFS_request *t) |
A convenience function. More... | |
virtual void | issueResponse (VFS_request *t) |
Once a request has been completed, issue a response. More... | |
virtual void | ls (VFS_request *r) |
List the contents of this node. More... | |
virtual void | metadata (VFS_request *r) |
Fetch the metadata of this node. More... | |
virtual void | read (VFS_request *r) |
Return the data contents of this node, or if it's a container call ls() More... | |
virtual void | releaseLock (VFS_request *r) |
Release a lock on this node. More... | |
virtual void | report (VFS_request *r) |
Report debugging information about the current state of this node. More... | |
virtual void | requestLock (VFS_request *r) |
Request a lock on this node. More... | |
virtual void | rm (VFS_request *r) |
Remove a child entry from a node, or the node itself. More... | |
virtual void | subscribe (VFS_request *r) |
Add an entry to this node's _subscription list. More... | |
virtual void | unsubscribe (VFS_request *r) |
Remove an entry from this node's _subscription list. More... | |
virtual void | unsubscribePath (QString path) |
Unsubscribe all references to a subpath. More... | |
virtual void | write (VFS_request *r) |
Write data to this node. More... | |
Protected Attributes | |
VFS_node * | _critical |
Crash may be imminent, the administrator address will be emailed this message if it is possible. More... | |
VFS_node * | _errors |
Error logs, which mean there is a problem but not a crash. More... | |
VFS_node * | _log |
Message collector node, which subscribes to the other nodes as an aggregator. More... | |
VFS_node * | _messages |
A message logging node. More... | |
VFS_node * | _warnings |
Warning logs, which provide non-critical information. More... | |
Protected Attributes inherited from VFS_node | |
VFS_children | _children |
This node's children. More... | |
QMutex | _lock |
A recursive mutex that is local to this node. More... | |
VFS_subscriptionType | _subscribers |
This node's subscribers. These subscribers will receive diff notifications. More... | |
Private Member Functions | |
void | email (QString address, QString subject, QString message) |
Email an administrator about a problem. More... | |
Private Attributes | |
QString | _adminEmail |
For CRITICAL() messages, this is the address that will be emailed. More... | |
int | _logLevel |
Filter log entries by this value... lower entries are very important, higher ones are more fine-grained. More... | |
int | _logTime |
Include log entry time, where 0 = none, 1 = locale time, 2 = locale time and date, 3 = UTC time date and offset. More... | |
ColorPrint | cp_bold |
Color settings for bold printing. More... | |
ColorPrint | cp_error |
Color settings for error messages. More... | |
ColorPrint | cp_warn |
Color settings for warning messages. More... | |
Additional Inherited Members | |
Public Slots inherited from VFS_node | |
virtual void | applyDiff (VFS_request *r) |
Apply a diff received via subscription. More... | |
virtual void | executeRequest (VFS_request *t) |
Based on the VFS_request::requestType, execute the function associated with an operation. More... | |
void | notifySubscribers (VFS_node *origin, VFS_request *t) |
Propagate a diff to subscribers. More... | |
virtual void | receiveResponse (VFS_request *t) |
Once a VFS_request has been completed, a response will be issued back to its _origin. More... | |
void | remove (bool andDelete) |
Remove a child node. More... | |
virtual void | remove (VFS_node *node=nullptr, QString *name=nullptr, QString user="server") |
Remove a child node from this node. More... | |
virtual void | subtreeRequest (VFS_request *t) |
find() the target of a VFS_request, and execute the request More... | |
virtual void | unsubscribeAll (VFS_node *n) |
Remove all references to a subscriber from this node. More... | |
Signals inherited from VFS_node | |
void | diff (VFS_node *origin, VFS_request *t) |
Emit a diff, which will trigger notifySubscribers() for a mounted node. More... | |
void | finished (bool andDelete=false) |
Emitted if a thread fails to create its node, or a node is rm()'d, or any other reason a node has completed its lifecycle. It is deleted if andDelete==true . More... | |
void | mounted () |
Emitted when a node is mount()ed. More... | |
void | unmounted (VFS_node *self) |
Emitted when a node is unmount()ed. More... | |
Static Public Member Functions inherited from VFS_node | |
static bool | __isNode (VFS_node *) |
Check to see if a node is in the global registry. More... | |
static QString | code (QString nodename, QString libname, QString &error) |
Fetch code or any other resource from a node. More... | |
A logger node with color formatting and different channels for message types.
Messages will be aggregated on the general "logs" path. This node will also provide "messages", "errors", "warnings", and "critical" as VFS paths.
Definition at line 8 of file VFS_logger.h.
|
explicit |
VFS_logger constructor.
logLevel | |
logTime | |
adminEmail | This will primarily be used with VFS_creator from VFS, so the parameters will generally be empty and will need to be set later using a submit. |
Definition at line 33 of file VFS_logger.cpp.
VFS_logger::~VFS_logger | ( | ) |
Definition at line 61 of file VFS_logger.cpp.
|
protectedvirtualslot |
Receive log information from a logging mechanism.
t | The VFS_request object |
The VFS constructor subscribes to logging channels to listen for output. It will not filter what it chooses to emit to other listeners. The specified log level will be printed to stdout and stderr, but all messages will be sent to subscribers, for instance an end user.
LogLevel is filtered on a 0-9 scale, where 0 will always be shown, and anything >= logLevel will be output to stdout.
The output format is:
Where:
ERROR and CRITICAL are sent to stderr, while all others are sent to stdout.
The design is meant to be easily greppable, filterable, and parseable, while having colors that facilitate quick identification for warnings and errors.
If a logTime setting is provided, the VFS will prepend a time string to each line of output.
Log Time:
Users who wish to receive logging information can subscribe to:
Definition at line 192 of file VFS_logger.cpp.
|
private |
Email an administrator about a problem.
address | The administrator email address list, separated by spaces, as accepted by the mail unix command. |
subject | The email subject |
message | The email message |
Definition at line 266 of file VFS_logger.cpp.
|
virtual |
This method will return this
if the path is settings, otherwise VFS_node::find().
r | The VFS_request object |
Reimplemented from VFS_node.
Definition at line 72 of file VFS_logger.cpp.
|
protectedvirtual |
Submit settings to this logger.
r | The VFS_request object |
The only _path accepted here is settings
, and the only useful values allowed are:
Reimplemented from VFS_node.
Definition at line 90 of file VFS_logger.cpp.
|
private |
For CRITICAL() messages, this is the address that will be emailed.
Definition at line 30 of file VFS_logger.h.
|
protected |
Crash may be imminent, the administrator address will be emailed this message if it is possible.
Definition at line 23 of file VFS_logger.h.
|
protected |
Error logs, which mean there is a problem but not a crash.
Definition at line 22 of file VFS_logger.h.
|
protected |
Message collector node, which subscribes to the other nodes as an aggregator.
Definition at line 19 of file VFS_logger.h.
|
private |
Filter log entries by this value... lower entries are very important, higher ones are more fine-grained.
Definition at line 28 of file VFS_logger.h.
|
private |
Include log entry time, where 0 = none, 1 = locale time, 2 = locale time and date, 3 = UTC time date and offset.
Definition at line 29 of file VFS_logger.h.
|
protected |
A message logging node.
Definition at line 20 of file VFS_logger.h.
|
protected |
Warning logs, which provide non-critical information.
Definition at line 21 of file VFS_logger.h.
|
private |
Color settings for bold printing.
Definition at line 32 of file VFS_logger.h.
|
private |
Color settings for error messages.
Definition at line 34 of file VFS_logger.h.
|
private |
Color settings for warning messages.
Definition at line 33 of file VFS_logger.h.