On Wed 05 Oct 2011 08:24:13 PM IST, Keith Robertson wrote:
> Hi,
>
> I would like to propose enhancing the VDSM source to emit message IDs in
> log messages with levels greater than DEBUG (i.e. INFO, ERROR, WARN,
> EXCEPTION, and CRITICAL). Messages IDs have been used successfully in
> many products and they can aid in debugging, documentation, root cause
> analysis, and internationalization.
>
> I have scanned the source and have determined that there are roughly 525
> calls to log.[error|warn|info|critical|exception] and I am volunteering
> to go through and add IDs to them all but, before I do I want to get
> buy-in from the project maintainers. While adding IDs to the messages I
> would also enable them for i18n.
>
> I have written a rough plan for adding messages IDs to VDSM below and
> I've provided some examples of products/projects that use message IDs.
>
> Examples of Projects that Use Message IDs:
> - JBoss 7 is adopting Message IDs for all of its logging. See the
> annotations (e.g. @Message(id = 12000, ) in the following piece of source:
> https://github.com/jbossas/jboss-as/blob/master/process-controller/src/main/java/org/jboss/as/process/ProcessLogger.java
>
> - Almost all IBM products use message IDs and they do a fairly good job
> of documenting them. Google has indexed them all and you can simply type
> them in to a search and get a description of the problem that is
> associated with the ID.
> http://publib.boulder.ibm.com/infocenter/tivihelp/v42r1/topic/com.ibm.omegamon.stor.doc/GC23-9705-0484.htm
>
>
>
> Example of a Log Statement with a Message ID in Python:
> FORMAT = '%(asctime)s %(lineno)s %(levelname)s(%(messageid)s): %(message)s'
> logging.basicConfig(format=FORMAT)
> logger = logging.getLogger()
> logger.warning('NFS problem. Unable to mount.', extra={ 'messageid' :
> 'VDSM1000'})
>
> // Produces
> 2011-10-05 13:24:43,180 11 WARNING(VDSM1000): NFS problem. Unable to mount.
>
>
> Example of a Log Statement with a Message ID in Python with i18n:
> logger.warning(_('NFS problem. Unable to mount.'), extra={ 'messageid' :
> 'VDSM1000'})
>
> Example of an i18n Log Message:
> Chinese: 2011年10月5日13:24:43,18011警告(VDSM1000):NFS问题。无法安装。
> English: 2011-10-05 13:24:43,180 11 WARNING(VDSM1000): NFS problem.
> Unable to mount.
>
>
>
> A Rough Plan for adding Message IDs to VDSM:
>
> Step 0: Decide on a logging format of the ID itself:
> - JBoss is using "JBAS#####". I am thinking that VDSM could probably do
> something similar "VDSM####".
>
> Step 1: Decide where to list and document all of the IDs.
> - It could be as simple as a page on VDSM's fedorahosted wiki.
>
> Step 2: Pin the format of the log messages:
> - Currently VDSM allows a user configurable Python log format. We would
> need to pin the format so that it includes a substitution variable for
> the message ID.
> Example: '%(asctime)s %(lineno)s %(levelname)s(%(messageid)s): %(message)s'
>
> Step 4: Plow through the VDSM source and add message IDs.
>
>
> Cheers,
> Keith
>
>
>
>
>
> _______________________________________________
> vdsm-devel mailing list
> vdsm-devel@lists.fedorahosted.org
> https://fedorahosted.org/mailman/listinfo/vdsm-devel

Seems like a nice idea. But how does it affect developers. How do they 
choose mIDs? How do you prevent collisions? How are they different from 
simple gettext?
_______________________________________________
vdsm-devel mailing list
vdsm-devel@lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/vdsm-devel

Reply via email to