Commit Graph

248 Commits

Author SHA1 Message Date
55dbaa49c0 Logging target must be explicitly defined.
Whether the log-file should be written to the filesystem or to
shared memory must now be explicitly defined when calling
skygw_logmanager_init() (instead of passing that via the argc/argv
construct).

Also, the meaning of '-l' when invoking maxscale has been changed.

Earlier -l [file|shm] specified whether the trace and debug logs
should be written to shared memory (while the error and message
logs always were written to the filesystem) and the _default_
was to write them to shared memory.

Now, with only one file, '-l' has still the same meaning, but it
decides whether the one and only logfile should be written to shared
memory, or the filesystem and the _default_ is to write it to the
filesystem.
2015-11-11 13:47:34 +02:00
14b8dbc4d8 Miniman changes to make testlog work.
testlog.c can never have worked, or then it cannot have been
kept up to date for a very long time.
2015-11-11 13:41:26 +02:00
abea233a2e If log manager not inited messages are written to stdout.
If the log manager has not been inited, then messages are written
to stdout. In practice this can happen if something is directly or
indirectly logged during the startup of maxscale, before
skygw_logmanager_init() has been called. Some refactoring is needed
to allow skygw_logmanager_init() to be called very early at program
startup.
2015-11-11 13:30:12 +02:00
43c7ccdd08 Whitespace and indentation changes.
Whitespace and indentation changes of log manager test programs.
2015-11-09 10:40:13 +02:00
450078fa92 Interface of skygw_logmanager_init(int argc, char* argv[]) changed.
The previous interface of skygw_logmanager_init was conceptually
broken. With -o you could specify that logging should be done to
stdout. However, even if you did that, the log manager still checked
that the logging directory could be accessed. Unless it had been
specified using -j <path> the default was /var/log/maxscale.

That is, unless the program calling skygw_logmanager_init was invoked
by a user that had write access to /var/log/maxscale, there would be
a complaint even if nothing was ever written to that directory.
In practice this meant that even if -o was used you had to provide
a -j with a path that surely is writeable (e.g. "/tmp").

This has now been changed so that you explicitly must provide the
log directory and the flags -j and -o are removed.

  bool skygw_logmanager_init(const char* logdir, int argc, char* argv[]);

If /logdir/ is provided then logged messages are written to a log file
in that directory. If /logdir/ is NULL then messages are logged to stdout
and no checks for access to any directory is not made.
2015-11-06 14:20:05 +02:00
80344babd7 Log manager additions.
Changes related to the replacement of the notion of logfiles
with the notion of syslog priorities.
2015-11-06 10:06:54 +02:00
834a88aeda Log variables moved to log_manager.h
The log manager variables lm_enabled_log_files_bitmask, log_ses_count
and tls_log_info that earlier were declared separately in every
c-file are now declared in the log_manager.h header.
2015-11-04 14:26:53 +02:00
e9ff89629b More obsolete functionality removed.
The log manager possibility for explicitly specifying the names
of the log files has never been used. In the name of simplicity
that functionality is removed.
2015-11-04 11:00:38 +02:00
865162dc54 Removed getopt options. 2015-11-04 10:29:42 +02:00
d7af979ad9 Removed obsolete functionality.
No need for debug, trace or messages prefixes or suffixes.
2015-11-04 10:29:42 +02:00
f17803e892 Only one log_file.
The array of log_files replaced with single instance.
2015-11-03 23:27:51 +02:00
633f06cddd The notion of a particular file being enabled is removed.
The one and only message file is always enabled.
2015-11-03 22:52:20 +02:00
3348fab3c4 Only error log is created.
Only the error log is created anymore. The data structures for
the other files still exist, but they are to be removed next.
2015-11-03 22:34:03 +02:00
8798475a46 Some re-arranging of functionality.
Some thread specific functionality moved from thr_flush_file
to the caller thr_filewriter_fun.
2015-11-03 21:50:34 +02:00
4de363e8dd Some log refactoring.
Some log manager refactoring to make it easier to later remove
all files but the error log.

Basically all that was done was to move everything inside the
for-loop of thr_filewriter_fun into a separate function called
thr_flush_file. Otherwise no changes in functionality was made.
2015-11-03 16:05:29 +02:00
9050fce3d4 It only makes sense to flush/rotate the error log.
The other log files are not used.
2015-11-03 14:23:31 +02:00
9ba6ad81b0 Some gotos removed. 2015-11-03 14:21:20 +02:00
6d1c069d41 A bitmask of logfiles is now only logged once. 2015-11-03 11:15:29 +02:00
142c22c2a8 The enabling/disabling of log written to error.log
A change on the path of removing all logs but error.log.
2015-11-02 14:53:35 +02:00
112e21d507 MAXSCALE_ macros renames to MXS_
Markus boldly introduced mxs as an abbreviation for Maxscale.
MXS_ is less wieldy than MAXSCALE_ for logging macros.
2015-11-02 10:11:59 +02:00
3da1769d12 skygw_log_flush no longer calls logmanager_write_log. 2015-10-30 15:26:10 +02:00
217a0ae406 Making logmanager_write_log into less of a kitchen-sink.
logmanager_write_log did three different things - logged a message,
flushed a file and rotated a file - none of which were performed
in one go. Hence there's no reason to do all those things in that
function.
2015-10-30 15:08:46 +02:00
7ac5176b46 Everything logged to one file with severity prefix.
Another step on the road of log manager modifications.

- All messages are now logged to error.log. The other files are
  still created but not used anymore.
- A severity prefix is added, to distinguish between messages logged
  to "different" files:

     LOGFILE_ERROR   => "[Error]:  "
     LOGFILE_MESSAGE => "[Notice]: "
     LOGFILE_TRACE   => "[Info]:   "
     LOGFILE_DEBUG   => "[Debug]   "

  That prefix is not written to syslog.
- When maxscale is built in debug mode, trace and debug messages
  are no longer enabled by default.

Next step is to remove the other files entirelly.
2015-10-30 11:21:51 +02:00
bea4051ad5 Spread down feature removed.
With only one file, the spreading down idea becomes nonsensical.
Furthermore, it has never been enabled due to some problems.
2015-10-29 11:40:51 +02:00
f964938aaf Minor cleanup.
Parameter documentation clarified, same approach followed all through.
2015-10-29 11:39:59 +02:00
22c8af4923 Removed obsolete parameters.
Valist is handled before logmanager_write_log is called. So it
is quite unnecessary to always having to pass a valist whether
it is used or not (and not it is never used).
2015-10-28 15:34:34 +02:00
90ff0f1fdf Augmentation moved.
Augmentation moved to skygw_log_write_context. The severity prefix
will be added there as well. If all is done on that level, the
amount of memory needed can be figured out in one go. No need to
allocate and copy the message several times.
2015-10-28 15:16:32 +02:00
4c0406a69c New logging macros
This commit is only to introduce new logging macros.

The current implementation is such that a statement like:

    MAXSCALE_NOTICE("Refreshing configuration following SIGHUP\n");

is equivalent with

    LOGIF(LM, (skygw_log_write(
                LOGFILE_MESSAGE,
                "Refreshing configuration following SIGHUP\n")));

The actual implementation will later be changed as the logging
mechanism itself is changed.

The names of the macros are now according to the levels of syslog
and currently the mapping is like:

    MAXSCALE_ERROR   (Syslog LOG_ERR)     -> LOGFILE_ERROR
    MAXSCALE_WARNING (Syslog LOG_WARNING) -> LOGFILE_ERROR
    MAXSCALE_NOTICE  (Syslof LOG_NOTICE)  -> LOGFILE_MESSAGE
    MAXSCALE_INFO    (Syslog LOG_INFO)    -> LOGFILE_TRACE
    MAXSCALE_DEBUG   (Syslog LOG_DEBUG)   -> LOGFILE_DEBUG

When log manager is changed to deal "natively" with syslog levels
this mapping will disappear of course.
2015-10-28 10:01:24 +02:00
ddcfe03c15 Removed duplicate code. 2015-10-26 15:16:54 +02:00
f2c5df703b Added an ellipsis at the end of a log message that exceeds the maximum size. 2015-10-26 12:15:24 +02:00
6c6f81abce Fix to MXS-427: https://mariadb.atlassian.net/browse/MXS-427
Stack allocated buffers now have a maximum size.
2015-10-26 10:06:20 +02:00
29e241ee60 __func__ instead of __FUNCTION__
The former is part of the C99 standard while the latter is
a GCC extension.
2015-10-23 12:52:55 +03:00
3751299731 Bool arguments replaced with enum.
Mush easier to see at the call-site what actually is done.
2015-10-22 16:05:23 +03:00
d93d01b116 General tidying
General tidying and correction of missed points during
earlier cleanup steps.
2015-10-22 14:54:03 +03:00
20364a132b Whitespace changes.
All binary operators surrounded by a space.
2015-10-22 14:40:57 +03:00
cb468be04f Function declarations changed to common Maxscale style. 2015-10-22 14:26:41 +03:00
18181e8cb9 All keywords now followed by space.
Plus some missing Allman identation fixes.
2015-10-22 10:58:32 +03:00
ba23fc6fa2 Structures renamed according to style guide.
Structures renamed according to style guide and forward declaration
moved from header (where they are not needed) to implementation.
2015-10-21 14:54:41 +03:00
f47b6324a1 Allman indentation style applied. 2015-10-21 14:54:19 +03:00
76f4f4fe89 Indentation and whitespace fixes.
Straightforward indentation and whitespace modifications.
This is the first one in a series of commits that will bring
log manager in line with the coding style.
2015-10-21 14:53:48 +03:00
338b870cd1 Fix to MXS-373: https://mariadb.atlassian.net/browse/MXS-373
The log manager is initialized only once and skygw_log_sync_all now checks if the log manager has been successfully started before interacting with the log manager
2015-09-21 17:27:49 +03:00
e443351341 Fix to MXS-279: https://mariadb.atlassian.net/browse/MXS-279
Added NULL checks to block buffer initialization and checks for return values to functions that use it.
2015-09-14 16:29:14 +03:00
37f8148574 MXS-362: Enable/disable log augmentation
Log message augmentation (appending of function name) can now
be enabled or disabled via the configuration file and command
line.

By default, the augmentation is disabled.
2015-09-11 15:58:31 +03:00
b84dbd8d3f MXS-357: Possibility to turn off log message augmentation.
It's not always desireable to have the function name
appended to every logged line.
2015-09-09 10:59:22 +03:00
0779673403 MXS-228: Include file name and line numbers
This change does not log the file name and line numbers,
but the function name. Together with the commit information
that is logged in conjunction with a crash and that MaxScale
can tell, when invoked, that is enough to be able to pinpoint
the location where a logging was made. Furthermore, that is
a lot less intrusive and less confusing for an
end-user than filename + line.

This is just a temporary workaround; the logging mechanism
needs to get an overhaul:

- Separate severity and logging target.
- Take syslog severities into use.
- Simplify what needs to be done by developer.
- etc.
2015-09-07 12:32:32 +03:00
8cd3971d45 Fixed segfault in log manager when writing to multiple logfiles at once. 2015-09-07 11:18:43 +03:00
160bbb70ee MXS-251: strerror
Replaces all calls to strerror with calls to strerror_r. The former
is non-thread safe while the latter is.
2015-09-05 15:52:13 +03:00
81506c61eb MXS-343: Minor refactoring of logging.
So that the functionality earlier in skygw_log_write[flush] need
not be duplicated. To be used by new logging functions.
2015-09-03 09:44:56 +03:00
6601dfaaa0 Removed all trailing whitespace. 2015-08-31 13:00:59 +03:00
d9bd22ce90 Added a NULL check to the log manager. 2015-08-26 16:32:17 +03:00