Logging
Sometimes, when debugging an issue, it's useful to see and log extra information and at
other times, you want logging to be minimal. Asterisk provides a number of ways of
logging information, to files or to a syslog server. The file /etc/asterisk/logger.conf
contains the configuration elements for logging. Asterisk has different types of message
that can be logged these are:
Verbose
|
General 'chatter' about what is
happening on the system.
Verbosity levels greater than 3
display dialplan commands as
they are executed. This
generates lots of log information
|
Debug |
Debug messages, normally only
used by programmers to extract
extended information
|
Notice
|
Non urgent alert messages |
Warning |
Warning alert messages,
something happened that might
be bad. Some tell you how bad
the warning is
|
Error
|
Error messages, something bad
happened – These should be rare.
|
In logger.conf you will see the [logfiles] section, this is where you define the filename
and content of log files. Take a look at this example entry
|
[logfiles]
debug => debug
|
This tells Asterisk to log debug messages (the right side of the =>) to a file called debug
(the left side of the =>) located in /var/log/asterisk/. This directory can be changed in
/etc/asterisk/asterisk.conf by modifying the line astlogdir => /var/log/asterisk to point
to the desired directory. You can log multiple information types to the same file or you
can spread the information over a number of files. For example
|
[logfiles]
debug => debug
messages=>warning, error
|
Will log debug messages to a file called debug, and will also log warning and error
messages to a file called messages. There is a special “file” called console which when
used will cause the message types specified to be logged to the Asterisk console, for
example:
|
[logfiles]
console => debug, warning, error, notice, verbose
|
Would log everything to the console (not to any files). The above is not recommended
since the amount of information that would be generated could be far to much to be of
any real use. If you change logger.conf you need to perform a reload or do a logger
rotate (see next section). You can also log messages to a syslog sever (remote logging
server), useful if you have either a lot of machines or want centralized logging. To do
this use the file syslog, with the suffix you will use in /etc/syslog.conf for example, in
logger.conf
|
[logfiles]
syslog.local0 => debug, warning, error, notice, verbose
|
And /etc/syslog.conf
This would send the Asterisk logging information to the syslog server at 192.168.1.22.
Setting up a syslog server is beyond the scope of this document and is left as an exercise
for the reader.
Rotate logs
It is advisable to rotate your logs frequently, depending on the amount of logging you
have turned on and the about of data that is actually logged. Files larger than 2Gb can
cause some nasty effects resulting in Asterisk crashes. You can rotate logs by using the
command
This will rename the old log and start a new one. It will also reload logger.conf and
adopt any changes you have made to it.
Verbosity
You can change the verbosity (how much information we get) of the output on processes attached to the Asterisk console by setting the level of verbosity. To do this we use the set verbose command, for example:
Sets the verbosity level to 999, Asterisk will tell you that the level of verbosity changed
|
asterisk*CLI> set verbose 999
Verbosity is at least 999
asterisk*CLI>
|
You should see every message when it is set to this level, whereas setting it to 1 will
show very little information.
|
|
Setting the verbosity level changes the level on every attached
process (connected via asterisk -r) not just the one you issue the
command from.
|
Getting to Grips with sip.conf
sip.conf is not difficult to understand, however there is a fundamental problem with SIP making it awkward to use. The problem is not so much with SIP itself, it's more to do with how we protect our networks. We all know that there are some nasty little people out there who are quite happy to steal your resources, make free calls using someone else's money etc. As a consequence of this we tend to put a firewall between them and us. This is where the problems start for SIP. In a network environment that requires no firewall, for example and Internal network, there will be no issues, but in a more complex network, perhaps using NAT (Network address translation) there are all sorts of hurdles to overcome.
You have a number of choices,
sip set debug on 设置显示更多的sip信息
sip set debug off关闭显示更多的sip信息
SIP Channels are only shown if registered
SIP SHOW INUSE will list all SIP extensions defined in SIP.CONF
SIP SHOW CHANNELS will list all SIP extensions registered at that time
sip set debug - Enable SIP debugging
sip set debug ip - Enable SIP debugging on IP
sip set debug off - Disable SIP debugging
sip set debug peer - Enable SIP debugging on Peername
stop gracefully 优雅地停止asterisk
stop now 立即停止运行asterisk
core show codecs 显示所有支持的编解码器
set verbose 10
set debug 10
core set debug channel - Enable/disable debugging on a channel
core set debug - Set level of debug chattiness
core set debug off - Turns off debug chattiness
core set verbose - Set level of verboseness
core show calls {uptime}: Display information on calls
logger set level {DEBUG|NOTICE}: Enables/Disables a specific logging level for this console
logger
set level debug off