document.write("<div class=\"pastie\">\n");
document.write("  <link href=\"http://pastie.org/stylesheets/embed.css\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />\n");
document.write("  <link href=\"http://pastie.org/stylesheets/clean.css\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />\n");
document.write("  \n");
document.write("\n");
document.write("  \n");
document.write("  \n");
document.write("\n");
document.write("\n");
document.write("\n");
document.write("\n");
document.write("\n");
document.write("\n");
document.write("\n");
document.write("	\n");
document.write("	<div class=\"allcode\">\n");
document.write("		<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n");
document.write("		<tr>\n");
document.write("			<td>\n");
document.write("				\n");
document.write("				<pre class=\"textmate-source-numbers\">1\n");
document.write("2\n");
document.write("3\n");
document.write("4\n");
document.write("5\n");
document.write("6\n");
document.write("7\n");
document.write("8\n");
document.write("9\n");
document.write("10\n");
document.write("11\n");
document.write("12\n");
document.write("13\n");
document.write("14\n");
document.write("15\n");
document.write("16\n");
document.write("17\n");
document.write("18\n");
document.write("19\n");
document.write("20\n");
document.write("21\n");
document.write("22\n");
document.write("23\n");
document.write("24\n");
document.write("25\n");
document.write("26\n");
document.write("27\n");
document.write("28\n");
document.write("29\n");
document.write("30\n");
document.write("31\n");
document.write("32\n");
document.write("33\n");
document.write("34\n");
document.write("35\n");
document.write("36\n");
document.write("37\n");
document.write("38\n");
document.write("39\n");
document.write("40\n");
document.write("41\n");
document.write("42\n");
document.write("43\n");
document.write("44\n");
document.write("45\n");
document.write("46\n");
document.write("47\n");
document.write("48\n");
document.write("49\n");
document.write("50\n");
document.write("51\n");
document.write("52\n");
document.write("53\n");
document.write("54\n");
document.write("55\n");
document.write("56\n");
document.write("57\n");
document.write("58\n");
document.write("59\n");
document.write("60\n");
document.write("61\n");
document.write("62\n");
document.write("63\n");
document.write("64\n");
document.write("65\n");
document.write("66\n");
document.write("67\n");
document.write("68\n");
document.write("69\n");
document.write("70\n");
document.write("71\n");
document.write("72\n");
document.write("73\n");
document.write("74\n");
document.write("75\n");
document.write("76\n");
document.write("77\n");
document.write("78\n");
document.write("79\n");
document.write("80\n");
document.write("81\n");
document.write("82\n");
document.write("83\n");
document.write("84\n");
document.write("85\n");
document.write("86\n");
document.write("87\n");
document.write("88\n");
document.write("89\n");
document.write("90\n");
document.write("91\n");
document.write("92\n");
document.write("93\n");
document.write("94\n");
document.write("95\n");
document.write("96\n");
document.write("97\n");
document.write("98\n");
document.write("99\n");
document.write("100\n");
document.write("101\n");
document.write("102\n");
document.write("103\n");
document.write("<\/pre>\n");
document.write("			<\/td>\n");
document.write("		<td>\n");
document.write("		<pre class=\"textmate-source\"><pre class=\"sunburst\"><span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'>## by Mark Wolgemuth see http://node.to for details on this<\/span>\n");
document.write("<span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'>## BSD License style on this<\/span>\n");
document.write("<span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'>## edited 2009 03 31 to move _LogRecordHelper to inner class of formatter<\/span>\n");
document.write("<span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'>## edited 2009 04 07 to remove module level static logger: not liked in some appengine setups<\/span>\n");
document.write("\n");
document.write("<span class=\'keyword keyword_control keyword_control_import keyword_control_import_python\'>import<\/span> logging\n");
document.write("<span class=\'keyword keyword_control keyword_control_import keyword_control_import_from keyword_control_import_from_python\'>from<\/span> google.appengine.ext.db <span class=\'keyword keyword_control keyword_control_import keyword_control_import_python\'>import<\/span> Model, DateTimeProperty, StringProperty, TextProperty, IntegerProperty\n");
document.write("<span class=\'keyword keyword_control keyword_control_import keyword_control_import_from keyword_control_import_from_python\'>from<\/span> threading <span class=\'keyword keyword_control keyword_control_import keyword_control_import_python\'>import<\/span> RLock\n");
document.write("<span class=\'keyword keyword_control keyword_control_import keyword_control_import_python\'>import<\/span> sys, traceback\n");
document.write("\n");
document.write("_default_identity <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'Log2DB\'<\/span>\n");
document.write("_loggers <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_structure meta_structure_dictionary meta_structure_dictionary_python\'>{<span class=\'meta meta_empty-dictionary meta_empty-dictionary_python\'>}<\/span><\/span>\n");
document.write("_mod_lock <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>RLock(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("\n");
document.write("<span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'># see bottom of module for default logger instance<\/span>\n");
document.write("\n");
document.write("<span class=\'meta meta_class meta_class_python\'><span class=\'storage storage_type storage_type_class storage_type_class_python\'>class<\/span> <span class=\'entity entity_name entity_name_type entity_name_type_class entity_name_type_class_python\'>GAEDBLogRecord<\/span>(<span class=\'meta meta_class meta_class_inheritance meta_class_inheritance_python\'><span class=\'entity entity_other entity_other_inherited-class entity_other_inherited-class_python\'>Model<\/span><\/span>):<\/span>\n");
document.write("    identity <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>StringProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("    created <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>DateTimeProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>auto_now<\/span><span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span><span class=\'constant constant_language constant_language_python\'>True<\/span><\/span>)<\/span>\n");
document.write("    message <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>TextProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("    filename <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>StringProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("    module <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>StringProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("    funcName <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>StringProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("    lineno <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>IntegerProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("    levelname <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>StringProperty(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("\n");
document.write("\n");
document.write("<span class=\'meta meta_class meta_class_python\'><span class=\'storage storage_type storage_type_class storage_type_class_python\'>class<\/span> <span class=\'entity entity_name entity_name_type entity_name_type_class entity_name_type_class_python\'>GAEDBFormatter<\/span>(<span class=\'meta meta_class meta_class_inheritance meta_class_inheritance_python\'><span class=\'entity entity_other entity_other_inherited-class entity_other_inherited-class_python\'>logging.Formatter<\/span><\/span>):<\/span>\n");
document.write("<span class=\'meta meta_function meta_function_decorator meta_function_decorator_python\'>    <span class=\'entity entity_name entity_name_function entity_name_function_decorator entity_name_function_decorator_python\'>@<span class=\'support support_type support_type_python\'>staticmethod<\/span><\/span><\/span>\n");
document.write("<span class=\'meta meta_function meta_function_python\'>    <span class=\'storage storage_type storage_type_function storage_type_function_python\'>def<\/span> <span class=\'entity entity_name entity_name_function entity_name_function_python\'>_trim_499<\/span>(<span class=\'meta meta_function meta_function_parameters meta_function_parameters_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>mystr<\/span><\/span>):<\/span>\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>try<\/span>:\n");
document.write("            <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>if<\/span> (<span class=\'meta meta_function-call meta_function-call_python\'><span class=\'support support_function support_function_builtin support_function_builtin_python\'>len<\/span>(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>mystr<\/span>)<\/span> <span class=\'keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_python\'>&gt;<\/span> <span class=\'constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python\'>499<\/span>):\n");
document.write("                <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>return<\/span> <span class=\'meta meta_item-access meta_item-access_python\'>mystr[<span class=\'meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python\'><span class=\'constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python\'>0<\/span>:<span class=\'constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python\'>496<\/span><\/span>]<\/span> <span class=\'keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python\'>+<\/span> <span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'...\'<\/span>\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>except<\/span>: <span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'># catch none<\/span>\n");
document.write("            <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>pass<\/span>\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>return<\/span> mystr\n");
document.write("\n");
document.write("<span class=\'meta meta_class meta_class_python\'>    <span class=\'storage storage_type storage_type_class storage_type_class_python\'>class<\/span> <span class=\'entity entity_name entity_name_type entity_name_type_class entity_name_type_class_python\'>_LogRecordHelper<\/span>(<span class=\'meta meta_class meta_class_inheritance meta_class_inheritance_python\'><span class=\'entity entity_other entity_other_inherited-class entity_other_inherited-class_python\'><span class=\'support support_type support_type_python\'>object<\/span><\/span><\/span>):<\/span>\n");
document.write("<span class=\'meta meta_function meta_function_python\'>        <span class=\'storage storage_type storage_type_function storage_type_function_python\'>def<\/span> <span class=\'entity entity_name entity_name_function entity_name_function_python\'><span class=\'support support_function support_function_magic support_function_magic_python\'>__init__<\/span><\/span>(<span class=\'meta meta_function meta_function_parameters meta_function_parameters_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>self<\/span><\/span>):<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.message <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.pathname <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.filename <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.module <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.funcName <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.lineno <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("            <span class=\'variable variable_language variable_language_python\'>self<\/span>.levelname <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>\n");
document.write("\n");
document.write("<span class=\'meta meta_function meta_function_python\'>    <span class=\'storage storage_type storage_type_function storage_type_function_python\'>def<\/span> <span class=\'entity entity_name entity_name_function entity_name_function_python\'>format<\/span>(<span class=\'meta meta_function meta_function_parameters meta_function_parameters_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>self<\/span>, <span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>rec<\/span><\/span>):<\/span>\n");
document.write("        record <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>._LogRecordHelper(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("        record.message <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>rec.getMessage(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("        record.pathname <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>._trim_499(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>rec.pathname<\/span>)<\/span>\n");
document.write("        record.filename <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>._trim_499(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>rec.filename<\/span>)<\/span>\n");
document.write("        record.module <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>._trim_499(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>rec.module<\/span>)<\/span>\n");
document.write("        record.funcName <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>._trim_499(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>rec.funcName<\/span>)<\/span>\n");
document.write("        record.lineno <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> rec.lineno\n");
document.write("        record.levelname <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> rec.levelname\n");
document.write("\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>if<\/span> rec.exc_info:\n");
document.write("            <span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'># Cache the traceback text to avoid converting it multiple times<\/span>\n");
document.write("            <span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'># (it\'s constant anyway)<\/span>\n");
document.write("            <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>if<\/span> <span class=\'keyword keyword_operator keyword_operator_logical keyword_operator_logical_python\'>not<\/span> rec.exc_text:\n");
document.write("                rec.exc_text <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>traceback.format_exc(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("        <span class=\'comment comment_line comment_line_number-sign comment_line_number-sign_python\'>#return the original log record untouch, since its going to db<\/span>\n");
document.write("            record.message <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_python\'>+=<\/span> <span class=\'string string_quoted string_quoted_double string_quoted_double_single-line string_quoted_double_single-line_python\'>&quot;<span class=\'constant constant_character constant_character_escape constant_character_escape_linefeed constant_character_escape_linefeed_python\'>\\n<\/span>&quot;<\/span> <span class=\'keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python\'>+<\/span> rec.exc_text\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>return<\/span> record\n");
document.write("\n");
document.write("<span class=\'meta meta_class meta_class_python\'><span class=\'storage storage_type storage_type_class storage_type_class_python\'>class<\/span> <span class=\'entity entity_name entity_name_type entity_name_type_class entity_name_type_class_python\'>GAEDBHandler<\/span>(<span class=\'meta meta_class meta_class_inheritance meta_class_inheritance_python\'><span class=\'entity entity_other entity_other_inherited-class entity_other_inherited-class_python\'>logging.Handler<\/span><\/span>):<\/span>\n");
document.write("<span class=\'meta meta_function meta_function_python\'>    <span class=\'storage storage_type storage_type_function storage_type_function_python\'>def<\/span> <span class=\'entity entity_name entity_name_function entity_name_function_python\'><span class=\'support support_function support_function_magic support_function_magic_python\'>__init__<\/span><\/span>(<span class=\'meta meta_function meta_function_parameters meta_function_parameters_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>self<\/span>, <span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>identity<\/span> <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>, *<span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>args<\/span>, **<span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>kw<\/span><\/span>):<\/span>\n");
document.write("        <span class=\'meta meta_function-call meta_function-call_python\'>logging.Handler.<span class=\'support support_function support_function_magic support_function_magic_python\'>__init__<\/span>(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>, <span class=\'keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python\'>*<\/span>args, <span class=\'keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python\'>*<\/span><span class=\'keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python\'>*<\/span>kw<\/span>)<\/span>\n");
document.write("        <span class=\'variable variable_language variable_language_python\'>self<\/span>.formatter <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>GAEDBFormatter(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("        <span class=\'variable variable_language variable_language_python\'>self<\/span>.logger_identity <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> identity\n");
document.write("\n");
document.write("<span class=\'meta meta_function meta_function_python\'>    <span class=\'storage storage_type storage_type_function storage_type_function_python\'>def<\/span> <span class=\'entity entity_name entity_name_function entity_name_function_python\'>emit<\/span>(<span class=\'meta meta_function meta_function_parameters meta_function_parameters_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>self<\/span>, <span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>record<\/span><\/span>):<\/span>\n");
document.write("        helper <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>.format(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>record<\/span>)<\/span>\n");
document.write("\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>try<\/span>:\n");
document.write("            rec <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>GAEDBLogRecord(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("            rec.identity <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'variable variable_language variable_language_python\'>self<\/span>.logger_identity\n");
document.write("            <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>for<\/span> attr <span class=\'keyword keyword_operator keyword_operator_logical keyword_operator_logical_python\'>in<\/span> <span class=\'meta meta_structure meta_structure_list meta_structure_list_python\'>[<span class=\'meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'message\'<\/span><\/span>, <span class=\'meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'filename\'<\/span><\/span>, <span class=\'meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'module\'<\/span><\/span>, <span class=\'meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'funcName\'<\/span><\/span>, <span class=\'meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'lineno\'<\/span><\/span>, <span class=\'meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'levelname\'<\/span><\/span>]<\/span>:\n");
document.write("                <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>try<\/span>:\n");
document.write("                    <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>if<\/span> <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'support support_function support_function_builtin support_function_builtin_python\'>getattr<\/span>(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>helper, attr<\/span>)<\/span> <span class=\'keyword keyword_operator keyword_operator_logical keyword_operator_logical_python\'>is<\/span> <span class=\'keyword keyword_operator keyword_operator_logical keyword_operator_logical_python\'>not<\/span> <span class=\'constant constant_language constant_language_python\'>None<\/span>:\n");
document.write("                        <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'support support_function support_function_builtin support_function_builtin_python\'>setattr<\/span>(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>rec, attr, <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'support support_function support_function_builtin support_function_builtin_python\'>getattr<\/span>(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>helper, attr<\/span>)<\/span><\/span>)<\/span>\n");
document.write("                <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>except<\/span> <span class=\'support support_type support_type_exception support_type_exception_python\'>AttributeError<\/span>:\n");
document.write("                    <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>pass<\/span>\n");
document.write("            <span class=\'meta meta_function-call meta_function-call_python\'>rec.put(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>except<\/span>:\n");
document.write("            <span class=\'meta meta_function-call meta_function-call_python\'><span class=\'variable variable_language variable_language_python\'>self<\/span>.handleError(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>record<\/span>)<\/span>\n");
document.write("\n");
document.write("<span class=\'meta meta_function meta_function_python\'><span class=\'storage storage_type storage_type_function storage_type_function_python\'>def<\/span> <span class=\'entity entity_name entity_name_function entity_name_function_python\'>getLogger<\/span>(<span class=\'meta meta_function meta_function_parameters meta_function_parameters_python\'><span class=\'variable variable_parameter variable_parameter_function variable_parameter_function_python\'>ident<\/span> <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> _default_identity<\/span>):<\/span>\n");
document.write("    <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>try<\/span>:\n");
document.write("        <span class=\'meta meta_function-call meta_function-call_python\'>_mod_lock.acquire(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>if<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>_loggers.has_key(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>ident<\/span>)<\/span>:\n");
document.write("            <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>return<\/span> <span class=\'meta meta_item-access meta_item-access_python\'>_loggers[<span class=\'meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python\'>ident<\/span>]<\/span>\n");
document.write("        <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>else<\/span>:\n");
document.write("            logger <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>logging.getLogger(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>ident<\/span>)<\/span>\n");
document.write("            handler <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> <span class=\'meta meta_function-call meta_function-call_python\'>GAEDBHandler(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>logger.name<\/span>)<\/span>\n");
document.write("            <span class=\'meta meta_function-call meta_function-call_python\'>logger.addHandler(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'>handler<\/span>)<\/span>            \n");
document.write("            <span class=\'meta meta_item-access meta_item-access_python\'>_loggers[<span class=\'meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python\'>ident<\/span>]<\/span> <span class=\'keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python\'>=<\/span> logger\n");
document.write("            <span class=\'meta meta_function-call meta_function-call_python\'>logger.info(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><span class=\'string string_quoted string_quoted_single string_quoted_single_single-line string_quoted_single_single-line_python\'>\'Log2DB registered identity: <span class=\'constant constant_other constant_other_placeholder constant_other_placeholder_python\'>%s<\/span> obj: <span class=\'constant constant_other constant_other_placeholder constant_other_placeholder_python\'>%s<\/span>\'<\/span> <span class=\'keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python\'>%<\/span> (ident, logger)<\/span>)<\/span>\n");
document.write("\n");
document.write("            <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>return<\/span> logger\n");
document.write("    <span class=\'keyword keyword_control keyword_control_flow keyword_control_flow_python\'>finally<\/span>:\n");
document.write("        <span class=\'meta meta_function-call meta_function-call_python\'>_mod_lock.release(<span class=\'meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python\'><\/span>)<\/span>\n");
document.write("<\/pre><\/pre>\n");
document.write("		<\/td>\n");
document.write("		<\/tr>\n");
document.write("		<\/table>\n");
document.write("	\n");
document.write("	<\/div>\n");
document.write("\n");
document.write("\n");
document.write("  \n");
document.write("  \n");
document.write("  <div class=\"credit\">\n");
document.write("    <div class=\"buttons\">\n");
document.write("      <a href=\"http://pastie.org/pastes/432896.txt\">\n");
document.write("      <img src=\"http://pastie.org/images/view.png\" height=\"20\" width=\"67\" /><\/a>\n");
document.write("    <\/div>\n");
document.write("  \n");
document.write("    <a href=\"http://pastie.org/432896\">Pastie #432896<\/a> linked directly from <a href=\"http://pastie.org/\">Pastie<\/a>.\n");
document.write("  <\/div><\/div>");

