Skip to content

Commit a7d2721

Browse files
committed
Merge branch 'release/1.5.0'
2 parents 7461d83 + f7afe2c commit a7d2721

File tree

7 files changed

+120
-14
lines changed

7 files changed

+120
-14
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Crwy
22

33
[![PyPI Version](https://img.shields.io/pypi/v/Crwy.svg)](https://pypi.python.org/pypi/Crwy)
4-
[![Build Status](https://travis-ci.org/wuyue92tree/crwy.svg?branch=1.4.0)](https://travis-ci.org/wuyue92tree/crwy)
4+
[![Build Status](https://travis-ci.org/wuyue92tree/crwy.svg?branch=1.5.0)](https://travis-ci.org/wuyue92tree/crwy)
55

66
# 简介
77

@@ -34,7 +34,7 @@ pip install crwy
3434
```
3535

3636
or
37-
前往下载: https://pypi.python.org/pypi/Crwy/1.4.0/
37+
前往下载: https://pypi.python.org/pypi/Crwy/1.5.0/
3838

3939
# 使用手册
4040

crwy/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.4.0
1+
1.5.0

crwy/commands/startproject.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616
LOG_PATH = os.path.join(PATH, 'log')
1717
CONFIG_PATH = os.path.join(PATH, 'crwy.cfg.tmpl')
1818
SETTINGS_PATH = os.path.join(PATH, 'settings.py.tmpl')
19-
LOGCONFIG_PATH = os.path.join(PATH, 'logger.conf.tmpl')
19+
20+
if sys.version_info[0] == 2:
21+
LOGCONFIG_PATH = os.path.join(PATH, 'logger_py2.conf.tmpl')
22+
else:
23+
LOGCONFIG_PATH = os.path.join(PATH, 'logger_py3.conf.tmpl')
2024

2125

2226
class Command(object):

crwy/templates/project/logger.conf.tmpl renamed to crwy/templates/project/logger_py2.conf.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ args=('./log/default.log', 'a', 100*1024*1024, 10)
4848
class=handlers.TimedRotatingFileHandler
4949
level=DEBUG
5050
formatter=defaultFmt
51-
args=('./log/default.log', 'D', 1, 0)
51+
args=('./log/default.log', 'midnight', 1, 0)
5252

5353

5454
###############################################
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#logger.conf
2+
###############################################
3+
[loggers]
4+
keys=root,fileLogger,rtLogger,timedRtLogger
5+
6+
[logger_root]
7+
level=INFO
8+
handlers=consoleHandler
9+
10+
[logger_fileLogger]
11+
handlers=consoleHandler,fileHandler
12+
qualname=fileLogger
13+
propagate=0
14+
15+
[logger_rtLogger]
16+
handlers=consoleHandler,rtHandler
17+
qualname=rtLogger
18+
propagate=0
19+
20+
[logger_timedRtLogger]
21+
handlers=consoleHandler,timedRtHandler
22+
qualname=timedRtLogger
23+
propagate=0
24+
25+
###############################################
26+
[handlers]
27+
keys=consoleHandler,fileHandler,rtHandler,timedRtHandler
28+
29+
[handler_consoleHandler]
30+
class=StreamHandler
31+
level=INFO
32+
formatter=simpleFmt
33+
args=(sys.stderr,)
34+
35+
[handler_fileHandler]
36+
class=FileHandler
37+
level=DEBUG
38+
formatter=defaultFmt
39+
args=('./log/default.log', 'a', 'utf-8')
40+
41+
[handler_rtHandler]
42+
class=handlers.RotatingFileHandler
43+
level=DEBUG
44+
formatter=defaultFmt
45+
args=('./log/default.log', 'a', 100*1024*1024, 10, 'utf-8')
46+
47+
[handler_timedRtHandler]
48+
class=handlers.TimedRotatingFileHandler
49+
level=DEBUG
50+
formatter=defaultFmt
51+
args=('./log/default.log', 'midnight', 1, 0, 'utf-8')
52+
53+
54+
###############################################
55+
56+
[formatters]
57+
keys=defaultFmt,simpleFmt
58+
59+
[formatter_defaultFmt]
60+
format=%(asctime)s %(filename)s %(funcName)s %(threadName)s [line:%(lineno)d] %(levelname)s %(message)s
61+
datefmt=%Y-%m-%d %H:%M:%S
62+
63+
[formatter_simpleFmt]
64+
format=%(asctime)s %(filename)s %(funcName)s %(threadName)s [line:%(lineno)d] %(levelname)s %(message)s
65+
datefmt=%Y-%m-%d %H:%M:%S

crwy/utils/common.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
'cookie2str', 'cookie2dict', 'config_handle',
2424
'file_handle', 'datetime2str', 'str2datetime',
2525
'dict2obj', 'obj2dict', 'remove_emoji', 'change_kv',
26-
'remove_item_from_dict'
26+
'remove_item_from_dict', 'splice_list'
2727
]
2828

2929

@@ -174,3 +174,24 @@ def remove_item_from_dict(obj, keys_to_remove):
174174
if obj.get(key, ''):
175175
obj.pop(key)
176176
return obj
177+
178+
179+
def splice_list(obj_list, group_number=3):
180+
"""
181+
分割列表
182+
:param obj_list:
183+
:param group_number:
184+
:return:
185+
"""
186+
if len(obj_list) < group_number:
187+
raise Exception('obj_list length must greater than group_number.')
188+
189+
distance = int(len(obj_list) / group_number)
190+
new_list = []
191+
for group in range(group_number):
192+
if group == group_number - 1:
193+
# 若有超出部分并入最后一组
194+
new_list.append(obj_list[distance*group:len(obj_list)])
195+
else:
196+
new_list.append(obj_list[distance*group:distance*(group+1)])
197+
return new_list

crwy/utils/logger.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,33 @@
44
# Email: wuyue92tree@163.com
55

66

7+
import os
8+
import sys
79
import logging
810
import logging.config
911
import logging.handlers
1012
from crwy.exceptions import CrwyException
13+
from crwy.settings.default_settings import TEMPLATE_DIR
1114

1215
try:
13-
import ConfigParser
16+
import ConfigParser as configparser
1417
except ImportError:
15-
from configparser import ConfigParser
18+
import configparser
1619

1720
DEFAULT_LOGGER_CONF = './conf/logger.conf'
1821

22+
if sys.version_info[0] == 2:
23+
BASE_LOGGER_CONF = os.path.join(
24+
TEMPLATE_DIR, 'project/logger_py2.conf.tmpl')
25+
else:
26+
BASE_LOGGER_CONF = os.path.join(
27+
TEMPLATE_DIR, 'project/logger_py3.conf.tmpl')
28+
1929
try:
20-
logging.config.fileConfig(DEFAULT_LOGGER_CONF)
30+
try:
31+
logging.config.fileConfig(DEFAULT_LOGGER_CONF)
32+
except KeyError:
33+
logging.config.fileConfig(BASE_LOGGER_CONF)
2134
except:
2235
pass
2336

@@ -54,7 +67,10 @@ def _install_handlers_custom(cp, formatters, log_path):
5467

5568
if "level" in opts:
5669
level = cp.get(sectname, "level")
57-
h.setLevel(logging._levelNames[level])
70+
try:
71+
h.setLevel(logging._levelNames[level])
72+
except AttributeError:
73+
h.setLevel(logging._nameToLevel[level])
5874
if len(fmt):
5975
h.setFormatter(formatters[fmt])
6076
if issubclass(klass, logging.handlers.MemoryHandler):
@@ -71,7 +87,7 @@ def _install_handlers_custom(cp, formatters, log_path):
7187
return handlers
7288

7389

74-
def fileConfigWithLogPath(fname=DEFAULT_LOGGER_CONF,
90+
def fileConfigWithLogPath(fname=BASE_LOGGER_CONF,
7591
log_path=None,
7692
defaults=None,
7793
disable_existing_loggers=True):
@@ -81,14 +97,14 @@ def fileConfigWithLogPath(fname=DEFAULT_LOGGER_CONF,
8197
if not log_path:
8298
raise CrwyException('Please setup <log_path> first!')
8399

84-
cp = ConfigParser.ConfigParser(defaults)
100+
cp = configparser.ConfigParser(defaults)
85101
if hasattr(fname, 'readline'):
86-
cp.readfp(fname)
102+
cp.read_file(fname)
87103
else:
88104
cp.read(fname)
89105
try:
90106
formatters = logging.config._create_formatters(cp)
91-
except ConfigParser.NoSectionError:
107+
except configparser.NoSectionError:
92108
raise CrwyException('Please make sure fname: "%s" is exist.' % fname)
93109

94110
logging._acquireLock()

0 commit comments

Comments
 (0)