I like alternate version because it does not limit the scope of the special logging to sessions.&nbsp; It can then be used to aggregate logging on any common filterable item.<br><br><br><div class="gmail_quote">On Mon, Dec 15, 2008 at 8:26 AM,  <span dir="ltr">&lt;<a href="mailto:stkn@freeswitch.org">stkn@freeswitch.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br>
<br>
the following series of patches adds a per-session logging capability (patch 1)<br>
and converts a part of mod_sofia over to use the new functions as an example<br>
(patch 2).<br>
<br>
Note: This is one of two possible ways to implement the feature... (see below)<br>
<br>
<br>
Why?:<br>
 &nbsp;Some of &quot;us&quot; are running fs with high call volumes and turning on debugging<br>
 &nbsp;globally causes massive amounts of space used and reduced performance. This<br>
 &nbsp;patch extends the logging api to be able to change the log level for e.g. a<br>
 &nbsp;single session (either from the dialplan or via API command / C API)<br>
 &nbsp;for diagnosing problems.<br>
<br>
How?:<br>
 &nbsp;The core patch adds a couple of new functions:<br>
<br>
 &nbsp; &nbsp;switch_core_session_log_printf(switch_core_session_t *, ...)<br>
 &nbsp; &nbsp;switch_core_session_set_loglevel()<br>
 &nbsp; &nbsp;switch_core_session_get_loglevel()<br>
<br>
 &nbsp;A new API command &quot;uuid_loglevel &lt;uuid&gt; &lt;level&gt;&quot; (mod_commands.c)<br>
 &nbsp;and a dialplan app &quot;session_loglevel&quot; (mod_dptools.c part of the core patch)<br>
 &nbsp;are included.<br>
<br>
 &nbsp;The default loglevel of a session is the current global log level.<br>
<br>
 &nbsp;All instances of switch_log_printf() that log session-specific messages<br>
 &nbsp;need to be converted to the new log function for this to be useful!<br>
 &nbsp;(The second patch has the changes for mod_sofia.c)<br>
<br>
<br>
Alternative implementation:<br>
<br>
 &nbsp;There&#39;s a second way to implement this feature, without adding another<br>
 &nbsp;log_printf function:<br>
<br>
 &nbsp;switch_log_printf has a &quot;userdata&quot; parameter that is currently unused,<br>
 &nbsp;which could be used to pass an additional value (e.g. a session) by<br>
 &nbsp;adding additional SWITCH_*_LOG helper macros. A session log call could<br>
 &nbsp;look like this:<br>
<br>
 &nbsp; &nbsp; switch_log_printf(SWITCH_SESSION_LOG(session), SWITCH_LOG_DEBUG,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;I&#39;m a session debug message\n&quot;);<br>
<br>
 &nbsp;Pro:<br>
 &nbsp; &nbsp; - Can be extended for other type of log actions (e.g. if we want<br>
 &nbsp; &nbsp; &nbsp; to implement even more fine-grained logging, per-module etc.)<br>
 &nbsp; &nbsp; &nbsp; without adding more switch_*_log_printf functions<br>
<br>
 &nbsp;Con:<br>
 &nbsp; &nbsp; - More work for switch_log_printf()<br>
<br>
<br>
<br>
Now it&#39;s up to you to discuss which way we want to go and if this feature<br>
is deemed useful :P<br>
<br>
Stefan<br>
<br>
<br>
P.S.: The patches are available via http too:<br>
<br>
 &nbsp;<a href="http://oss.axsentis.de/people/stkn/freeswitch/fs-r10758-session_loglevel.patch" target="_blank">http://oss.axsentis.de/people/stkn/freeswitch/fs-r10758-session_loglevel.patch</a><br>
 &nbsp;<a href="http://oss.axsentis.de/people/stkn/freeswitch/fs-r10758-session_loglevel-convert-mod_sofia.c.patch" target="_blank">http://oss.axsentis.de/people/stkn/freeswitch/fs-r10758-session_loglevel-convert-mod_sofia.c.patch</a><br>

<br>
<br>
Diffstat of the core patch:<br>
<br>
&nbsp;include/private/switch_core_pvt.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;1<br>
&nbsp;include/switch_core.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 15 ++++++++++<br>
&nbsp;include/switch_log.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 18 +++++++++++++<br>
&nbsp;mod/applications/mod_commands/mod_commands.c | &nbsp; 37 +++++++++++++++++++++++++++<br>
&nbsp;mod/applications/mod_dptools/mod_dptools.c &nbsp; | &nbsp; 19 +++++++++++++<br>
&nbsp;switch_core_session.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; 15 ++++++++++<br>
&nbsp;switch_log.c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 34 ++++++++++++++++++++----<br>
&nbsp;7 files changed, 133 insertions(+), 6 deletions(-)<br>
<br>
<br>
--<br>
Stefan Knoblich<br>
Systemadministrator<br>
<br>
axsentis GmbH<br>
Eupener Strasse 74<br>
50933 Köln<br>
<br>
Tel: 0180 - 506 705 521*<br>
Fax: 0180 - 506 705 529*<br>
<br>
E-Mail: <a href="mailto:s.knoblich@axsentis.de">s.knoblich@axsentis.de</a><br>
Web: <a href="http://www.axsentis.de" target="_blank">www.axsentis.de</a><br>
<br>
Eingetragen beim AG Köln: HR B 56238<br>
UST-ID: DE244977565<br>
Gesellschafter-Geschäftsführer:<br>
Yan Lecomte, Eduard Schlein, Apostolos Varsamis<br>
<br>
*14ct/min aus dem Festnetz der T-Com | dtms<br>
<br>
<br>_______________________________________________<br>
Freeswitch-dev mailing list<br>
<a href="mailto:Freeswitch-dev@lists.freeswitch.org">Freeswitch-dev@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-dev</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Anthony Minessale II<br><br>FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
<br>AIM: anthm<br><a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch<br><br>FreeSWITCH Developer Conference<br><a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br><a href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a><br>pstn:213-799-1400<br>