zoukankan      html  css  js  c++  java
  • Title

    django根据不同app配置相应的log文件

    settings.py

    # django logging
    LOG_PATH = "/var/log/blog/"
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'standard': {
                'format': '[%(levelname)s] %(asctime)s [%(filename)s:%(lineno)d] %(message)s'
            },
        },
        'handlers': {
            'app01': {
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',
                'formatter': 'standard',
                'filename': '%s/app01.log' % LOG_PATH,
                'maxBytes': 1024 * 1024 * 10,
                'backupCount': 3,
            },
            'app02': {
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',
                'formatter': 'standard',
                'filename': '%s/app02.log' % LOG_PATH,
                'maxBytes': 1024 * 1024 * 10,
                'backupCount': 3,
            },
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'standard',
            }
        },
        'loggers': {
            'app01': {
                'handlers': ['app01', 'console'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'app02': {
                'handlers': ['app02', 'console'],
                'level': 'DEBUG',
                'propagate': True,
            },
        }
    }

    在app01的views.py中进行调用

    import logging
    log = logging.getLogger("app01")
    
    log.error('Hello')

    在/var/log/blog/app01.log中就会有字符串'Hello'打印出来。

    CentOS/Debian/Ubuntu ShadowsocksR单/多端口一键管理脚本:
    主用代码:
    yum -y install wget
    wget -N --no-check-certificate https://softs.fun/Bash/ssr.sh 
    chmod +x ssr.sh  
    bash ssr.sh
    备用代码:
    yum -y install wget
    wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh 
    chmod +x ssr.sh 
    bash ssr.sh
    
    一键加速VPS服务器
    yum -y install wget
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
    chmod +x bbr.sh
    ./bbr.sh
    把上面整个代码复制后粘贴进去,不动的时候按回车,然后耐心等待,最后重启vps服务器即可。该方法是开机自动启动,部署一次就可以了。
    
    windows: https://nofile.io/f/6Jm7WJCyOVv/ShadowsocksR-4.7.0-win.7z SSR客户端
    安卓 :https://nofile.io/f/GRWw7PbADrc#1c6c32f969e7f5d9
    
    转载GitHub:https://github.com/Alvin9999/new-pac/wiki/%E8%87%AA%E5%BB%BAss%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%99%E7%A8%8B
    SSR.txt
    版权归作者所有,任何形式转载请联系作者。
    作者:petanne(来自豆瓣)
    来源:https://www.douban.com/note/301166150/
    
    1.多表连接查询:感觉django太NX了。
      class A(models.Model):
        name = models.CharField(u'名称')
      class B(models.Model):
        aa = models.ForeignKey(A)
    B.objects.filter(aa__name__contains='searchtitle')
    
    1.5 反向查询,补上记录1.5,感觉django太太太NX了。
      class A(models.Model):
        name = models.CharField(u'名称')
      class B(models.Model):
        aa = models.ForeignKey(A,related_name="FAN")
        bb = models.CharField(u'名称')
      查A: A.objects.filter(FAN__bb='XXXX'),都知道related_name的作用,A.FAN.all()是一组以A为外键的B实例,可前面这样的用法是查询出所有(B.aa=A且B.bb=XXXX)的A实例,然后还可以通过__各种关系查找,很好用!!!
    
    2.条件选取querySet的时候,filter表示=,exclude表示!=。
    querySet.distinct() 去重复
    __exact 精确等于 like 'aaa'
     __iexact 精确等于 忽略大小写 ilike 'aaa'
     __contains 包含 like '%aaa%'
     __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
    __gt 大于
    __gte 大于等于
    __lt 小于
    __lte 小于等于
    __in 存在于一个list范围内
    __startswith 以...开头
    __istartswith 以...开头 忽略大小写
    __endswith 以...结尾
    __iendswith 以...结尾,忽略大小写
    __range 在...范围内
    __year 日期字段的年份
    __month 日期字段的月份
    __day 日期字段的日
    __isnull=True/False
    
    例子:
    >> q1 = Entry.objects.filter(headline__startswith="What")
    >> q2 = q1.exclude(pub_date__gte=datetime.date.today())
    >> q3 = q1.filter(pub_date__gte=datetime.date.today())
    >>> q = q.filter(pub_date__lte=datetime.date.today())
    >>> q = q.exclude(body_text__icontains="food")
    
    即q1.filter(pub_date__gte=datetime.date.today())表示为时间>=now,q1.exclude(pub_date__gte=datetime.date.today())表示为<=now
    
    2013/12/12补充:
    “在django models中取得一个字段的distinct值”。就是select distinct xxx from table_name ...这样的功能。使用values会生成ValuesQuerySet(形如N个dict组成的list),猜测大数据无额外性能影响,毕竟queryset系列都是使用时才查询操作的。
    xxxx.objects.values("field_name").distinct()
    #或者
    xxxx.objects.distinct().values("field_name")
    这两句生成的sql语句相同,原帖地址:http://blog.csdn.net/tsbob/article/details/1340293。
    
    关于缓存:
    queryset是有缓存的,a = A.objects.all(),print [i for i in a].第一次执行打印会查询数据库,然后结果会被保存在queryset内置的cache中,再执行print的时候就会取自缓存。
    很多时候会遇到仅需判断queryset是否为空的情况,可以1. if queryset:pass 2.if queryset.count>0:pass 3.if queryset.exists():pass. 三种方式性能依次提升。
    当queryset非常巨大时,cache会成为问题。此时可以queryset.iterator(),迭代器的用处就不多说了,根据具体需求情况使用。
    Django ORM
    # in sqlite:
        article_obj=models.Article.objects
                  .filter(nid=1)
                  .extra(select={"standard_time":"strftime('%%Y-%%m-%%d',create_time)"})
                  .values("standard_time","nid","title")
        print(article_obj)
        # <QuerySet [{'title': 'MongoDb 入门教程', 'standard_time': '2017-09-03', 'nid': 1}]>
    ORM values
  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/guotianbao/p/10132542.html
Copyright © 2011-2022 走看看