Logging

change log's output on the fly via pacmd command

This is done by adding a new command set-log-target in file cli-command.c. and this patch is already accepted.

add log category support

The original proposal is to have a mechanism that's similar to gstreamer 's category support, therefore we can give it a category's name and a log level to decide whether we want to turn some logs on or off.

The first version of this category support:
* add a palog_category_t_ type and in this type, we have log level, its category name, its category description and its output color.
* when a log message comes in, it has a function called initdefaults_ in log.c and I need to register some pre-defined categories before I can use it.
* and in every file when we want to use the category, we need to a line #define PALOG_CATEGORY_DEFAULT PA_LOG_CATEGORY_CORE_.
* for modules' usage, it's a little different, we need to register the category in painit()_ and therefore we can use this category.

I've discussed with Arun on IRC and it seems that the first version is not good enough. We'd better have a on-the-go interface. So thanks to Arun's advice, we've second proposal:
* Whenever we want to use a specific category, we only need to add one line PASET_CATEGORY("sink-input")_ at the top of the c file.
* Then when a log message comes in, it checks whether the requested category exists or not, if it's not, then it creates it dynamically,
* For users to take advantage of the category support, we have to add some 'category' related commands, (just like what we've done with the modules), something just come out of my mind is:
* list all avaiable categories
* set categories to different log level

Now the implementation is done and the patch is sent to mailing list for review.

look into systemd journal support

* Sadly when I tried to install a new systemd on my old Fedora Core 15, the system can't boot anymore...
* Discussion with Arun on IRC shows that there are two ways we can take from systemd journal
* either make the journal part in systemd a reusable library
* or to do the logging by ourselves.
* Ping Colin and Lennart on IRC, but there's no replies.

circular buffer support

The purpose of this support is to have a buffer to hold the last few lines of the log and then users can query about these logs, e.g. filtering about the messages etc.

A demo is done and I've sent it out to mailing list for review.

But the problem is that it incorporates the usage of a mutex and in pulseaudio, we'd prefer to remove that lock. So the next step is to see how we can overcome this shortcoming.

Testing

Setup gcov to see how pulseaudio is covered by the current code. Planning...