上海网站建设永灿14年品牌wordpress的ajax好慢

当前位置: 首页 > news >正文

上海网站建设永灿14年品牌,wordpress的ajax好慢,1w粉丝接广告多少钱,seo技术推广logging(日志) 日志记录是程序员工具箱中非常有用的工具。它可以帮助您更好地理解程序的流程#xff0c;并发现您在开发过程中可能没有想到的场景。 日志为开发人员提供了额外的一组眼睛#xff0c;这些眼睛不断关注应用程序正在经历的流程。它们可以存储信息#xff0c;例…logging(日志) 日志记录是程序员工具箱中非常有用的工具。它可以帮助您更好地理解程序的流程并发现您在开发过程中可能没有想到的场景。 日志为开发人员提供了额外的一组眼睛这些眼睛不断关注应用程序正在经历的流程。它们可以存储信息例如访问应用程序的用户或IP。如果发生错误那么通过告诉您程序在到达发生错误的代码行之前的状态它们可以提供比堆栈跟踪更多的见解。 通过从正确的位置记录有用的数据您不仅可以轻松地调试错误还可以使用数据分析应用程序的性能以规划扩展或查看使用模式以规划营销。 Python提供了一个日志系统作为其标准库的一部分因此您可以快速将日志记录添加到您的应用程序中。在本文中您将了解为什么使用此模块是向应用程序添加日志记录以及如何快速入门的最佳方式您将了解一些可用的高级功能。 Logging模块 Python中的日志记录模块是一个随时可用且功能强大的模块旨在满足初学者和企业团队的需求。它被大多数第三方Python库使用因此您可以将日志消息与这些库中的日志消息集成以为您的应用程序生成同类日志。 将记录添加到Python程序就像这样简单 import logging导入日志记录模块后您可以使用称为“logger”的内容来记录您要查看的消息。默认情况下有5个标准级别指示事件的严重性。每个都有一个相应的方法可用于记录该严重级别的事件。按严重程度增加的顺序定义的级别如下 DEBUG信息 info警告 warning错误 error危急 critical 日志记录模块为您提供了一个默认记录器使您无需进行太多配置即可开始使用。可以调用每个级别的相应方法如以下示例所示 import logginglogging.debug(这里是调试信息) logging.info(这里是详情信息) logging.warning(这里是警告信息) logging.error(这里是错误信息) logging.critical(这里是危机信息)上述程序的输出如下所示 WARNING:root:这里是警告信息 ERROR:root:这里是错误信息 CRITICAL:root:这里是危机信息 输出显示每条消息之前的严重性级别root即日志记录模块为其默认记录器提供的名称。记录器将在后面的章节中详细讨论。此格式显示由冒号:分隔的级别名称和消息是默认的输出格式可以配置为包括时间戳行号和其他内容细节。 请注意并没有记录debug()和info()消息。这是因为默认情况下日志记录模块会记录严重性级别为WARNING或更高的邮件。您可以通过将日志记录模块配置为根据需要记录所有级别的事件来更改它。您还可以通过更改配置来定义自己的严重性级别但通常不建议这样做因为它可能会导致您可能正在使用的某些第三方库的日志混淆。 基本配置 您可以使用该方法配置日志记录basicConfig(**kwargs) 一些常用的参数basicConfig()如下 level根记录器将设置为指定的严重性级别。filename这指定文件。filemode如果filename给定则以此模式打开文件。默认值为a表示追加。format这是日志消息的格式。 通过使用该level参数您可以设置要记录的日志消息级别。这可以通过传递类中可用的一个常量来完成这将允许记录该级别或更高级别的所有日志记录调用。这是一个例子 import logginglogging.basicConfig(levellogging.DEBUG) logging.debug(This will get logged)DEBUG:root:This will get logged DEBUG现在将记录DEBUG级别或更高级别的事件。 同样对于记录到文件而不是控制台filename并且filemode可以使用您可以使用确定消息的格式format。以下示例显示了所有三个的用法 import logginglogging.basicConfig(filenameapp.log, filemodew, format%(name)s - %(levelname)s - %(message)s) logging.warning(This will get logged to a file)root - ERROR - This will get logged to a file 该消息将如下所示但将写入名为app.log而不是控制台的文件。filemode设置为w这意味着每次basicConfig()调用日志文件都以“写入模式”打开程序的每次运行都将重写该文件。filemode的默认配置a是append。 您可以使用更多参数进一步自定义根记录器basicConfig()可在此处找到。 应该注意basicConfig()只有在之前没有配置根记录器的情况下调用配置根记录器才有效。基本上这个函数只能调用一次。 debug()info()warning()error()和critical()也称basicConfig()自动无参数如果它以前没有叫。这意味着在第一次调用上述函数之一后您无法再配置根记录器因为它们会在basicConfig()内部调用该函数。 默认设置basicConfig()是将记录器设置为以下列格式写入控制台 ERROR:root:This is an error message 格式化输出 虽然您可以将任何可以表示为字符串的变量作为消息传递给您的日志但是有一些基本元素已经成为其中的一部分LogRecord并且可以轻松添加到输出格式中。如果要将进程ID与级别和消息一起记录可以执行以下操作 import logginglogging.basicConfig(format%(process)d-%(levelname)s-%(message)s) logging.warning(This is a Warning)18472-WARNING-This is a Warning format可以使用LogRecord您喜欢的任何排列中的属性字符串。可以在此处找到可用属性的完整列表。 这是另一个可以添加日期和时间信息的示例 import logginglogging.basicConfig(format%(asctime)s - %(message)s, levellogging.INFO) logging.info(Admin logged in)2018-07-11 20:12:06,288 - Admin logged in %(asctime)s增加了创造时间LogRecord。可以使用datefmt属性更改格式该属性使用与datetime模块中的格式化函数相同的格式化语言例如time.strftime() import logginglogging.basicConfig(format%(asctime)s - %(message)s, datefmt%d-%b-%y %H:%M:%S) logging.warning(Admin logged out)12-Jul-18 20:53:19 - Admin logged out 记录变量数据 在大多数情况下您可能希望在日志中包含应用程序中的动态信息。您已经看到日志记录方法将字符串作为参数并且在单独的行中使用可变数据格式化字符串并将其传递给log方法似乎很自然。但实际上这可以通过使用消息的格式字符串并将变量数据作为参数附加来直接完成。这是一个例子 import loggingname Johnlogging.error(%s raised an error, name)类和函数 到目前为止我们已经看到了一个名为默认记录器root用于通过日志模块只要其功能被直接称为是这样的logging.debug()。您可以并且应该通过创建Logger类的对象来定义自己的记录器尤其是在应用程序具有多个模块的情况下。我们来看看模块中的一些类和函数。 日志记录模块中定义的最常用类如下 Logger这是一个类其对象将直接在应用程序代码中用于调用函数。LogRecord记录器自动创建LogRecord具有与记录事件相关的所有信息的对象例如记录器的名称功能行号消息等。Handler处理程序将LogRecord控制器或文件发送到所需的输出目标。Handler对于像的子类的碱StreamHandlerFileHandlerSMTPHandlerHTTPHandler等等。这些子类将日志记录输出发送到相应的目标如sys.stdout磁盘文件。Formatter您可以通过指定列出输出应包含的属性的字符串格式来指定输出的格式。 其中我们主要处理Logger类的对象这些对象使用模块级函数进行实例化logging.getLogger(name)。getLogger()使用相同的多次调用name将返回对同一Logger对象的引用这使我们无法将记录器对象传递到需要它的每个部分。这是一个例子 import logginglogger logging.getLogger(example_logger) logger.warning(This is a warning)This is a warning 同样与根记录器不同无法使用自定义记录器进行配置basicConfig()。您必须使用处理程序和格式化程序对其进行配置 使用Handler 当您想要配置自己的记录器并在生成日志时将日志发送到多个位置时处理程序就会出现。处理程序将日志消息发送到已配置的目标如标准输出流或文件或HTTP或通过SMTP发送到您的电子邮件。 您创建的记录器可以有多个处理程序这意味着您可以将其设置为保存到日志文件并通过电子邮件发送。 与记录器一样您也可以在处理程序中设置严重性级别。如果要为同一记录器设置多个处理程序但希望每个处理程序具有不同的严重性级别这将非常有用。例如您可能希望将具有级别WARNING及更高级别的日志记录到控制台但是具有级别ERROR及更高级别的所有内容也应保存到文件中。这是一个执行该操作的程序

logging_example.pyimport logging# Create a custom logger

logger logging.getLogger(name)# Create handlers c_handler logging.StreamHandler() f_handler logging.FileHandler(file.log) c_handler.setLevel(logging.WARNING) f_handler.setLevel(logging.ERROR)# Create formatters and add it to handlers c_format logging.Formatter(%(name)s - %(levelname)s - %(message)s) f_format logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s) c_handler.setFormatter(c_format) f_handler.setFormatter(f_format)# Add handlers to the logger logger.addHandler(c_handler) logger.addHandler(f_handler)logger.warning(This is a warning) logger.error(This is an error)main - WARNING - This is a warning main - ERROR - This is an error 在这里logger.warning()创建一个LogRecord包含事件的所有信息并将其传递给它拥有的所有处理程序c_handler和f_handler。 c_handler是一个StreamHandler带有级别WARNING并从中获取信息LogRecord以生成指定格式的输出并将其打印到控制台。f_handler是一个FileHandler 有级别的 ERROR它忽略LogRecord了它的级别WARNING。 当logger.error()调用时c_handler 行为与以前完全相同并f_handler获得a LogRecord级别ERROR因此它继续生成输出c_handler但不是将其打印到控制台而是以这种格式将其写入指定的文件 2018-08-03 16:12:21,723 - main - ERROR - This is an error将与name变量对应的记录器的名称记录为main这是Python分配给执行开始的模块的名称。如果此文件由某个其他模块导入则该name变量将对应于其名称logging_example。这是它的样子

run.pyimport logging_examplelogging_example - WARNING - This is a warning

logging_example - ERROR - This is an error保持冷静并阅读日志 记录模块被认为非常灵活。它的设计非常实用应该适合您的开箱即用。您可以将基本日志记录添加到一个小项目中或者如果您正在处理一个大项目则可以创建自己的自定义日志级别处理程序类等。 如果您还没有在应用程序中使用日志记录那么现在是开始的好时机。完成后日志记录肯定会消除开发过程中的大量摩擦并帮助您找到将应用程序提升到新的水平的机会。 Python 日志模块详解及应用 日志概述 百度百科的日志概述 Windows网络操作系统都设计有各种各样的日志文件如应用程序日志安全日志、系统日志、Scheduler服务日志、FTP日志、WWW日志、DNS服务器日志等等这些根据你的系统开启的服务的不同而有所不同。我们在系统上进行一些操作时这些日志文件通常会记录下我们操作的一些相关内容这些内容对系统安全工作人员相当有用。比如说有人对系统进行了IPC探测系统就会在安全日志里迅速地记下探测者探测时所用的IP、时间、用户名等用FTP探测后就会在FTP日志中记下IP、时间、探测所用的用户名等。 我映像中的日志 查看日志是开发人员日常获取信息、排查异常、发现问题的最好途径日志记录中通常会标记有异常产生的原因、发生时间、具体错误行数等信息这极大的节省了我们的排查时间无形中提高了编码效率。 日志分类 我们可以按照输出终端进行分类也可以按照日志级别进行分类。输出终端指的是将日志在控制台输出显示和将日志存入文件日志级别指的是 Debug、Info、WARNING、ERROR以及CRITICAL等严重等级进行划分。 Python 的 logging logging提供了一组便利的日志函数它们分别是debug()、 info()、 warning()、 error() 和 critical()。logging函数根据它们用来跟踪的事件的级别或严重程度来命名。标准级别及其适用性描述如下以严重程度递增排序 每个级别对应的数字值为 CRITICAL50ERROR40WARNING30INFO20DEBUG10NOTSET0。 Python 中日志的默认等级是 WARNINGDEBUG 和 INFO 级别的日志将不会得到显示在 logging 中更改设置。 日志输出 输出到控制台 使用 logging 在控制台打印日志这里我们用 Pycharm 编辑器来观察 import logginglogging.debug(调试信息) logging.warning(警告信息) logging.info(详情信息)从上图运行的结果来看的确只显示了 WARNING 级别的信息验证了上面的观点。同时也在控制台输出了日志内容默认情况下 Python 中使用 logging 模块中的函数打印日志日志只会在控制台输出而不会保存到日文件。 有什么办法可以改变默认的日志级别呢 当然是有的logging 中提供了 basicConfig 让使用者可以适时调节默认日志级别我们可以将上面的代码改为 import logginglogging.basicConfig(levellogging.INFO) logging.debug(调试信息) logging.info(详情信息) logging.warning(警告信息)在 basicConfig 中设定 level 参数的级别即可。 保存到文件 刚才演示了如何在控制台输出日志内容并且自由设定日志的级别那现在就来看看如何将日志保存到文件。依旧是强大的 basicConfig我们再将上面的代码改为 import logginglogging.basicConfig(levellogging.DEBUG, filenamecoder.log, filemodea) logging.debug(调试信息) logging.info(详情信息) logging.warning(警告信息)在配置中填写 filename 指定文件名 和 filemode 文件写入方式控制台的日志输出就不见了那么 coder.log 会生成么 在 .py 文件的同级目录生成了名为 coder.log 的日志。         通过简单的代码设置我们就完成了日志文件在控制台和文件中的输出。