Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/manage logging options #11

Merged
merged 4 commits into from
Aug 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions manifests/config.pp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@
content => template('asterisk/queues.conf.erb'),
}

$logger_options = $asterisk::logger_options
asterisk::dotd { '/etc/asterisk/logger':
content => template('asterisk/logger.conf.erb'),
}

$manager_enable = $asterisk::real_manager_enable
$manager_port = $asterisk::manager_port
$manager_bindaddr = $asterisk::manager_bindaddr
Expand Down
2 changes: 2 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
$agents_options = {},
$features_options = $asterisk::params::features_options,
$features_featuremap = {},
$logger_options = $asterisk::params::logger_options,
$queues_options = {},
$modules_autoload = $asterisk::params::modules_autoload,
$modules_noload = $asterisk::params::modules_noload,
Expand All @@ -37,6 +38,7 @@
validate_hash($agents_options)
validate_hash($features_options)
validate_hash($features_featuremap)
validate_hash($logger_options)
validate_hash($queues_options)
validate_bool($modules_autoload)
validate_array($modules_noload)
Expand Down
7 changes: 7 additions & 0 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,13 @@
'monitor-type' => 'MixMonitor',
}

$logger_options = {
'rotatestrategy' => 'rotate',
'use_callids' => 'yes',
'appendhostname' => 'yes',
'queue_log' => 'yes',
}

$modules_autoload = true
$modules_noload = [
'pbx_gtkconsole.so',
Expand Down
195 changes: 195 additions & 0 deletions templates/logger.conf.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
;
; Logging Configuration
;
; In this file, you configure logging to files or to
; the syslog system.
;
; "logger reload" at the CLI will reload configuration
; of the logging system.
;
;[general]
;
; Customize the display of debug message time stamps
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
;
; see strftime(3) Linux manual for format specifiers. Note that there is also
; a fractional second parameter which may be used in this field. Use %1q
; for tenths, %2q for hundredths, etc.
;
;dateformat=%F %T ; ISO 8601 date format
;dateformat=%F %T.%3q ; with milliseconds
;
;
; This makes Asterisk write callids to log messages
; (defaults to yes)
;use_callids = no
;
; This appends the hostname to the name of the log files.
;appendhostname = yes
;
; This determines whether or not we log queue events to a file
; (defaults to yes).
;queue_log = no
;
; Determines whether the queue_log always goes to a file, even
; when a realtime backend is present (defaults to no).
;queue_log_to_file = yes
;
; Set the queue_log filename
; (defaults to queue_log)
;queue_log_name = queue_log

; When using realtime for the queue log, use GMT for the timestamp
; instead of localtime. (defaults to no)
;queue_log_realtime_use_gmt = no

; Log rotation strategy (defaults to sequential):
; none: Do not perform any log rotation at all. You should make
; very sure to set up some external log rotate mechanism
; as the asterisk logs can get very large, very quickly.
; sequential: Rename archived logs in order, such that the newest
; has the highest sequence number. When
; exec_after_rotate is set, ${filename} will specify
; the new archived logfile.
; rotate: Rotate all the old files, such that the oldest has the
; highest sequence number [this is the expected behavior
; for Unix administrators]. When exec_after_rotate is
; set, ${filename} will specify the original root filename.
; timestamp: Rename the logfiles using a timestamp instead of a
; sequence number when "logger rotate" is executed.
; When exec_after_rotate is set, ${filename} will
; specify the new archived logfile.
;rotatestrategy = rotate
;
; Run a system command after rotating the files. This is mainly
; useful for rotatestrategy=rotate. The example allows the last
; two archive files to remain uncompressed, but after that point,
; they are compressed on disk.
;
; exec_after_rotate=gzip -9 ${filename}.2
;
;
[logfiles]
; For each file, specify what to log.
;
; For console logging, you set options at start of
; Asterisk with -v for verbose and -d for debug
; See 'asterisk -h' for more information.
;
; Directory for log files is configures in asterisk.conf
; option astlogdir
;
; File names can either be relative to the standard Asterisk log directory (see "astlogdir" in
; asterisk.conf), or absolute paths that begin with '/'.
;
; A few file names have been reserved and are considered special, thus cannot be used and will
; not be considered as a regular file name. These include the following:
;
; syslog - logs to syslog facility
; console - logs messages to the Asterisk root console.
;
; Format is "filename" and then "levels" of debugging to be included.
; For each file name given a comma separated list of logging "level" types should be specified
; and include at least one of the following (in no particular order):
; debug
; notice
; warning
; error
; verbose(<level>)
; dtmf
; fax
; security
;
; The "verbose" value can take an optional integer argument that indicates the maximum level
; of verbosity to log at. Verbose messages with higher levels than the indicated level will
; not be logged to the file. If a verbose level is not given, verbose messages are logged
; based upon the current level set for the root console.

; Special filename "console" represents the root console
;
;
; Verbose takes an optional argument, in the form of an integer level.
; Verbose messages with higher levels will not be logged to the file. If
; the verbose level is not specified, it will log verbose messages following
; the current level of the root console.
;
; The special character "*" can also be specified and represents all levels, even dynamic
; levels registered by modules after the logger has been initialized. This means that loading
; and unloading modules that create and remove dynamic logging levels will result in these
; levels being included on filenames that have a level name of "*", without any need to
; perform a "logger reload" or similar operation.
;
; Special level name "*" means all levels, even dynamic levels registered
; by modules after the logger has been initialized (this means that loading
; and unloading modules that create/remove dynamic logger levels will result
; in these levels being included on filenames that have a level name of "*",
; without any need to perform a 'logger reload' or similar operation).
; Note that there is no value in specifying both "*" and specific level names
; for a filename; the "*" level means all levels. The only exception is if
; you need to specify a specific verbose level. e.g, "verbose(3),*".
;
; Note, there is no value in specifying both "*" and specific level types for a file name.
; The "*" level means ALL levels. The only exception is if you need to specify a specific
; verbose level. e.g, "verbose(3),*".
;
; We highly recommend that you DO NOT turn on debug mode if you are simply
; running a production system. Debug mode turns on a LOT of extra messages,
; most of which you are unlikely to understand without an understanding of
; the underlying code. Do NOT report debug messages as code issues, unless
; you have a specific issue that you are attempting to debug. They are
; messages for just that -- debugging -- and do not rise to the level of
; something that merit your attention as an Asterisk administrator. Debug
; messages are also very verbose and can and do fill up logfiles quickly;
; this is another reason not to have debug mode on a production system unless
; you are in the process of debugging a specific issue.
;
; It is highly recommended that you DO NOT turn on debug mode when running a production system
; unless you are in the process of debugging a specific issue. Debug mode outputs a LOT of
; extra messages and information that can and do fill up log files quickly. Most of these
; messages are hard to interpret without an understanding of the underlying code. Do NOT report
; debug messages as code issues, unless you have a specific issue that you are attempting to debug.
; They are messages for just that -- debugging -- and do not rise to the level of something that
; merit your attention as an Asterisk administrator.
;
; output notices, warnings and errors to the console
;console => notice,warning,error
;
; output security messages to the file named "security"
;security => security
;
; output notices, warnings and errors to the the file named "messages"
;messages => notice,warning,error
;
; output notices, warnings, errors, verbose, dtmf, and fax to file name "full"
;full => notice,warning,error,verbose,dtmf,fax
;
; output notices, warning, and errors to the syslog facility
;syslog.local0 => notice,warning,error
;
;debug => debug
;security => security
;console => notice,warning,error
;console => notice,warning,error,debug
;messages => notice,warning,error
;full => notice,warning,error,debug,verbose,dtmf,fax

;syslog keyword : This special keyword logs to syslog facility
;syslog.local0 => notice,warning,error

[general]
<% @logger_options.sort.map do |name, value|
if value.is_a? Array
value.each do |v| -%>
<%= name -%>=<%= v %>
<% end
else -%>
<%= name -%>=<%= value %>
<% end
end -%>

[logfiles]
console => notice,warning,error,security
messages => notice,warning,error,security

#include </etc/asterisk/logger.d/*.conf>