]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
misc/make_umid: little script and elisp fragment to insert umid= arguments
authorBrian Warner <warner@allmydata.com>
Tue, 26 Aug 2008 01:59:18 +0000 (18:59 -0700)
committerBrian Warner <warner@allmydata.com>
Tue, 26 Aug 2008 01:59:18 +0000 (18:59 -0700)
misc/make_umid [new file with mode: 0644]

diff --git a/misc/make_umid b/misc/make_umid
new file mode 100644 (file)
index 0000000..b4f222f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+
+"""Create a short probably-unique string for use as a umid= argument in a
+Foolscap log() call, to make it easier to locate the source code that
+generated the message. The main text of the log message is frequently
+unhelpful for this, and python doesn't make it cheap to compile in the
+filename and line number of logging calls.
+
+Given a message-unique-ID like 'aXoWcA', make your logging call look like:
+
+ log.msg('OMG badness', level=log.WEIRD, umid='aXoWcA')
+
+Then later, if this message actually occurs, you can grep your source tree
+for aXoWcA to locate the code that caused it.
+
+Just stick to the convention that 'umid=' is reserved for this job. It is a
+good idea to make all the logging statements that could provoke an Incident
+(i.e. those at level=log.WEIRD or higher) have umid= arguments, to make it
+easier to write classifier functions for the incident-gatherer.
+
+"""
+
+#The following elisp code may be useful:
+
+# (defun insert-umid ()
+#   (interactive)
+#   (insert ", umid=\"")
+#   (call-process "make_umid" nil t)
+#   (delete-char -1)
+#   (insert "\"")
+# )
+# (global-set-key (kbd "C-\`") 'insert-umid)
+
+
+import os, base64, sys
+
+def make_id():
+    while True:
+        m = os.urandom(4) # this gives 6-character message ids
+        m = base64.b64encode(m)
+        if "/" in m or "+" in m:
+            continue
+        m = m.replace("=", "")
+        break
+    return m
+
+count = 1
+if len(sys.argv) > 1:
+    count = int(sys.argv[1])
+for i in range(count):
+    print make_id()
+