python ---- 日志模块

作者: 幼姿沫 | 来源:发表于2020-06-01 22:01 被阅读0次

    一    回滚提交操作

    """

    开始编程步骤:

    begin -----  增删改查的语句  -----  rollback 回滚 撤销操作  ----- commit 提交数据

    编程实现事务控制    python操作mysql 默认事务已经打开

    代码操作实现*N个步骤放到一个try异常处理块中,出现异常添加回滚

    """

    1.第一种情况是修改之后直接进行提交然后进行关闭

    import pymysql

    def transform():

    conn=pymysql.connect(host="localhost",port=3306,user="root",passwd="root",db="transform",charset="utf8")

    cur=conn.cursor()

    cur.execute("update user set balance=balance-200 where uname='张华'")

    try:

    cur.execute("update user set balance=balance+200 where uname='张刚'")

    except:

    print("***操作错误***")

    print("***操作成功***")

    conn.commit()

    conn.close()

    if __name__ == '__main__':

    transform()

    2.第二种方式* 对数据库进行操作之后提交数据库之后,

    在数据库中还是原来的数据因为进行了回滚操作

    import pymysql

    def transform():

    conn=pymysql.connect(host="localhost",port=3306,user="root",passwd="root",db="transform",charset="utf8")

    cur=conn.cursor()

    try:

    cur.execute("insert into transform values(default,'花花',25000)")

    cur.execute("insert into transform values(default,'乎乎',6000)")

    except:

    #如果是报错或者要撤销上一步操作的话

    conn.rollback()

    print("执行结束!")

    #如果步骤都正常提交到数据库

    conn.commit()

    conn.close()

    if __name__ == '__main__':

    transform()

    二   日志文件 xx.log 作用是  程序的敏感信息和异常信息会被单独写在一个文本文件中,该文件叫做 系统日志文件

    日志信息可以人为的分为几个级别: noset debug info warning error critical

    在python中自带的日志模块 import logging

    在日志中进行的操作*

    1.导入日志模块python自带   

      import logging

    2.获得日志记录器           

      logger = logging.getLogger()

    3.指定处理的文件            

    files = logging.FileHandle('test.log',encoding='utf8',mode='a')

    4.日志的格式时间名称级别信息  

    formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s %(message)s')

    #设置格式化                  

    fh.setFormatter(format)

    logger.addHandler(fh)

    logger.setLevel(logging.DEBUG)

    logging.info(name)

    简单的自定义格式日志记录器!

    import logging

    logging.basicConfig(filename='access.log',

    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',

    datefmt='%Y-%m-%d %H:%M:%S %p',

    level=10)

    logging.debug('调试debug')

    logging.info('消息info')

    logging.warning('警告warn')

    logging.error('错误error')

    logging.critical('严重critical')

    日志模板logging的 对象  Formatter / Handler / Logger / Filter

    logger        产生日志的对象

    Filter        过滤日志的对象

    Handler      接收日志然后控制打印到不同的地方 FileHandler

    Formatter    可以定制不同的日志格式对象

    """

    import logging

    def shop_logging(name):

    name=name+"登陆成功"

        logger=logging.getLogger()

    files=logging.FileHandler('test.log',encoding='utf8',mode='a')

    formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s *  %(message)s')

    files.setFormatter(formatter)

    logger.addHandler(files)

    logger.setLevel(logging.DEBUG)

    logging.info(name)

    shop_logging("admin")

    运行结果展示*  test.log

    三   ATM取款机 日志记载  Logging

    #导入模块 pyhon中自带logging日志模块 用logging.出来他们的方法和属性

    import logging

    import re

    #加载配置  (日志配置在工具类中已经写好)

    #添加的全局的日志格式配置

    logging.basicConfig(filename='access.log',

                        format='%(asctime)s - %(name)s - %(levelname)s - %(module)s * %(message)s ',

                        datefmt='%Y-%m-%d  %H:%M:%S %p',

                        level=20)

    def login():

    print("""

    ********************ATM取款机*******************

    1.取款功能

    2.转账功能

    3.存款功能

    4.查询功能

    0.退出功能

              """)

    option=input("请选择菜单*")

    option_str=re.sub("\D","",option)

    if option_strin ["1","2","3","4","0"]:

    option_int=int(option_str)

    if option_int==1:

    get()

    elif option_int==2:

    trans()

    elif option_int==3:

    save()

    elif option_int==4:

    show()

    elif option_int==0:

    print("退出转账系统***")

    mark=False

    #调试过程可以使用print  但是上线之后必须去掉print 太多的print会影响运行效率

    def get():

    logging.info("用户选择了取款***")

    def trans():

    logging.error("用户选择了转账***")

    def save():

    print("进行存款***")

    def show():

    print("进行查询***")

    if __name__ =='__main__':

    login()

    运行结果*

    相关文章

      网友评论

        本文标题:python ---- 日志模块

        本文链接:https://www.haomeiwen.com/subject/vwcezhtx.html