utilskit 0.2.16__tar.gz → 0.2.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. {utilskit-0.2.16/utilskit.egg-info → utilskit-0.2.17}/PKG-INFO +54 -24
  2. {utilskit-0.2.16 → utilskit-0.2.17}/README.md +53 -23
  3. {utilskit-0.2.16 → utilskit-0.2.17}/pyproject.toml +1 -1
  4. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/repeatutils/repeatutils.py +1 -1
  5. {utilskit-0.2.16 → utilskit-0.2.17/utilskit.egg-info}/PKG-INFO +54 -24
  6. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit.egg-info/SOURCES.txt +0 -2
  7. utilskit-0.2.16/utilskit/logutils/__init__.py +0 -1
  8. utilskit-0.2.16/utilskit/logutils/logutils.py +0 -215
  9. {utilskit-0.2.16 → utilskit-0.2.17}/MANIFEST.in +0 -0
  10. {utilskit-0.2.16 → utilskit-0.2.17}/setup.cfg +0 -0
  11. {utilskit-0.2.16 → utilskit-0.2.17}/test/test.py +0 -0
  12. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/__init__.py +0 -0
  13. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/classificationutils/__init__.py +0 -0
  14. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/classificationutils/classificationutils.py +0 -0
  15. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/dataframeutils/__init__.py +0 -0
  16. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/dataframeutils/dataframeutils.py +0 -0
  17. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/dbutils/__init__.py +0 -0
  18. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/dbutils/dbutils.py +0 -0
  19. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/plotutils/__init__.py +0 -0
  20. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/plotutils/plotutils.py +0 -0
  21. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/repeatutils/__init__.py +0 -0
  22. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/timeutils/__init__.py +0 -0
  23. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/timeutils/timeutils.py +0 -0
  24. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/utils/__init__.py +0 -0
  25. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit/utils/utils.py +0 -0
  26. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit.egg-info/dependency_links.txt +0 -0
  27. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit.egg-info/requires.txt +0 -0
  28. {utilskit-0.2.16 → utilskit-0.2.17}/utilskit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utilskit
3
- Version: 0.2.16
3
+ Version: 0.2.17
4
4
  Summary: 다양한 편의성 함수 모음 패키지
5
5
  Author-email: kimyh <kim_yh663927@naver.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -17,52 +17,82 @@ Requires-Dist: tqdm==4.67.1
17
17
  Requires-Dist: xlrd==2.0.2
18
18
  Requires-Dist: openpyxl==3.1.5
19
19
 
20
- # 0.2.16
20
+ # install
21
+ ```cmd
22
+ pip install utilskit
23
+ ```
24
+
25
+ # 개요
26
+
27
+ 데이터 전처리를 위한 편의용 연산함수 모음 toolkit
28
+
29
+ - classificationutils
30
+ confusion maxtrix 생성 지원
31
+ - dataframeutils
32
+ pandas dataframe 에 대한 전처리 지원
33
+ 각종 확장자 대응 불러오기, 시간컬럼보정, 결측치보완, 유효성 평가 지원
34
+ - dbutils
35
+ query 날리기, dataframe 전체 DB 삽입, DB테이블컬럼추출 등 지원
36
+ - plotutils
37
+ python matplotlib 함수 기반 이미지 생성 간편화 지원
38
+ - repeatutils
39
+ data array 또는 list 에서 반복되는 구간을 입력된 변수 논리에 따라 산정하는 전처리연산 지원
40
+ - timeutils
41
+ 입력된 수치의 시, 분, 초 반환, 입력된 시작~끝일 사이의 전체 날짜 문자열 생성, 현재 시간에 대한 유동적 추출 지원
42
+ - utils
43
+ 에러 메세지 추출 등 일반적인 편의성 함수 연산 지원
44
+
45
+ # version
46
+ ## 0.2.17
47
+ - logutils 기능 완전 삭제 > logie 패키지로 분리
48
+ ## 0.2.16
21
49
  - repeatutils 의 section_union 에서 mode 를 & 으로 하고 sub 또는 main section 이 빈 리스트인 경우 빈리스트 [] 를 리턴 하도록 수정
22
- # 0.2.15
50
+ ### 0.2.16.1
51
+ - 조건문에서 & 앞에 띄어쓰기가 하나 포함되어있어 정상적 연산이 되지 않는 부분 수정
52
+ ## 0.2.15
23
53
  - repeatutils 의 section_union 에서 결과가 빈값일때 에러가 나는 현상 수정
24
- # 0.2.14
54
+ ## 0.2.14
25
55
  - repeatutils 의 min_key 를 설정했을 때 min_equal=False 로 두는 경우 정상적인 구간 탐색을 못하는 현상 수정
26
- # 0.2.13
56
+ ## 0.2.13
27
57
  - repeatutils 에 section_union 함수 추가
28
- ## 0.2.13.1
58
+ ### 0.2.13.1
29
59
  - rpu.get_section 을 써서 에러가 난 부분 수정
30
- # 0.2.12
60
+ ## 0.2.12
31
61
  - dataframeutils 의 fill_repeat_nan 함수가 NaN 이 딱 하나만 있는 경우 보정하지 못하는 현상 수정
32
- # 0.2.11
62
+ ## 0.2.11
33
63
  - dataframeutils 의 fill_repeat_nan 함수가 3 이하 반복되는 NaN 이 아닌 3 이상 반복되는 NaN 구간에 대해 보정하는 현상 수정
34
- # 0.2.10
64
+ ## 0.2.10
35
65
  - repeatutils 에서 between 이 정상작동하지 않는 현상 수정
36
- ## 0.2.10.1
66
+ ### 0.2.10.1
37
67
  - 버전 업로드 에러 수정
38
- ## 0.2.10.2
68
+ ### 0.2.10.2
39
69
  - 함수 내부 print 제거
40
- # 0.2.9
70
+ ## 0.2.9
41
71
  - repeatuils 에서 정수형 list 를 넣었을때 float 으로 변경되도록 수정
42
- # 0.2.8
72
+ ## 0.2.8
43
73
  - dbutils 에서 db 의 컬럼명을 리스트로 추출하는 get_db_name 함수 추가
44
- ## 0.2.8.1
74
+ ### 0.2.8.1
45
75
  - __all__ 에 get_db_name 추가해서 사용가능하도록 설정
46
- # 0.2.7
76
+ ## 0.2.7
47
77
  - repeatutils 에서 정수형 list 를 넣었을때 key 를 통한 구간 파악이 되지 않는 현상 수정
48
- # 0.2.6
78
+ ## 0.2.6
49
79
  - dataframeutils 의 fill_repeat_nan 의 에러 수정
50
- # 0.2.5
80
+ ## 0.2.5
51
81
  - xlsx 읽는 패키지 install 추가
52
- # 0.2.4
82
+ ## 0.2.4
53
83
  - repeatutils 의 에러 제거
54
- # 0.2.3
84
+ ## 0.2.3
55
85
  - dbutils 에 대한 업데이트 진행
56
- # 0.2.2
86
+ ## 0.2.2
57
87
  - build 방식 변경
58
- # 0.2.1
88
+ ## 0.2.1
59
89
  - repeatutila 에 get_section 함수 추가
60
- # 0.2.0
90
+ ## 0.2.0
61
91
  - 정식 최초 배포버전
62
92
  - 각 함수의 사용성 강화 및 비활성 함수 지정
63
- # 0.1.2
93
+ ## 0.1.2
64
94
  - repeatutils 의 get_repeat_section 에서 하나의 값이 여러 구간에서 반복될때 마지막 구간만 나오는 부분 수정
65
95
  - repeatutils 의 get_repeat_section 및 get_stan_repeat_section 에서 추출되는 구간의 마지막 값이 +1 이 되는 부분 수정
66
- # 0.1.1
96
+ ## 0.1.1
67
97
  - repeatutils.py 추가
68
98
  - utils.py 에서 repeat 관련 함수 제거
@@ -1,49 +1,79 @@
1
- # 0.2.16
1
+ # install
2
+ ```cmd
3
+ pip install utilskit
4
+ ```
5
+
6
+ # 개요
7
+
8
+ 데이터 전처리를 위한 편의용 연산함수 모음 toolkit
9
+
10
+ - classificationutils
11
+ confusion maxtrix 생성 지원
12
+ - dataframeutils
13
+ pandas dataframe 에 대한 전처리 지원
14
+ 각종 확장자 대응 불러오기, 시간컬럼보정, 결측치보완, 유효성 평가 지원
15
+ - dbutils
16
+ query 날리기, dataframe 전체 DB 삽입, DB테이블컬럼추출 등 지원
17
+ - plotutils
18
+ python matplotlib 함수 기반 이미지 생성 간편화 지원
19
+ - repeatutils
20
+ data array 또는 list 에서 반복되는 구간을 입력된 변수 논리에 따라 산정하는 전처리연산 지원
21
+ - timeutils
22
+ 입력된 수치의 시, 분, 초 반환, 입력된 시작~끝일 사이의 전체 날짜 문자열 생성, 현재 시간에 대한 유동적 추출 지원
23
+ - utils
24
+ 에러 메세지 추출 등 일반적인 편의성 함수 연산 지원
25
+
26
+ # version
27
+ ## 0.2.17
28
+ - logutils 기능 완전 삭제 > logie 패키지로 분리
29
+ ## 0.2.16
2
30
  - repeatutils 의 section_union 에서 mode 를 & 으로 하고 sub 또는 main section 이 빈 리스트인 경우 빈리스트 [] 를 리턴 하도록 수정
3
- # 0.2.15
31
+ ### 0.2.16.1
32
+ - 조건문에서 & 앞에 띄어쓰기가 하나 포함되어있어 정상적 연산이 되지 않는 부분 수정
33
+ ## 0.2.15
4
34
  - repeatutils 의 section_union 에서 결과가 빈값일때 에러가 나는 현상 수정
5
- # 0.2.14
35
+ ## 0.2.14
6
36
  - repeatutils 의 min_key 를 설정했을 때 min_equal=False 로 두는 경우 정상적인 구간 탐색을 못하는 현상 수정
7
- # 0.2.13
37
+ ## 0.2.13
8
38
  - repeatutils 에 section_union 함수 추가
9
- ## 0.2.13.1
39
+ ### 0.2.13.1
10
40
  - rpu.get_section 을 써서 에러가 난 부분 수정
11
- # 0.2.12
41
+ ## 0.2.12
12
42
  - dataframeutils 의 fill_repeat_nan 함수가 NaN 이 딱 하나만 있는 경우 보정하지 못하는 현상 수정
13
- # 0.2.11
43
+ ## 0.2.11
14
44
  - dataframeutils 의 fill_repeat_nan 함수가 3 이하 반복되는 NaN 이 아닌 3 이상 반복되는 NaN 구간에 대해 보정하는 현상 수정
15
- # 0.2.10
45
+ ## 0.2.10
16
46
  - repeatutils 에서 between 이 정상작동하지 않는 현상 수정
17
- ## 0.2.10.1
47
+ ### 0.2.10.1
18
48
  - 버전 업로드 에러 수정
19
- ## 0.2.10.2
49
+ ### 0.2.10.2
20
50
  - 함수 내부 print 제거
21
- # 0.2.9
51
+ ## 0.2.9
22
52
  - repeatuils 에서 정수형 list 를 넣었을때 float 으로 변경되도록 수정
23
- # 0.2.8
53
+ ## 0.2.8
24
54
  - dbutils 에서 db 의 컬럼명을 리스트로 추출하는 get_db_name 함수 추가
25
- ## 0.2.8.1
55
+ ### 0.2.8.1
26
56
  - __all__ 에 get_db_name 추가해서 사용가능하도록 설정
27
- # 0.2.7
57
+ ## 0.2.7
28
58
  - repeatutils 에서 정수형 list 를 넣었을때 key 를 통한 구간 파악이 되지 않는 현상 수정
29
- # 0.2.6
59
+ ## 0.2.6
30
60
  - dataframeutils 의 fill_repeat_nan 의 에러 수정
31
- # 0.2.5
61
+ ## 0.2.5
32
62
  - xlsx 읽는 패키지 install 추가
33
- # 0.2.4
63
+ ## 0.2.4
34
64
  - repeatutils 의 에러 제거
35
- # 0.2.3
65
+ ## 0.2.3
36
66
  - dbutils 에 대한 업데이트 진행
37
- # 0.2.2
67
+ ## 0.2.2
38
68
  - build 방식 변경
39
- # 0.2.1
69
+ ## 0.2.1
40
70
  - repeatutila 에 get_section 함수 추가
41
- # 0.2.0
71
+ ## 0.2.0
42
72
  - 정식 최초 배포버전
43
73
  - 각 함수의 사용성 강화 및 비활성 함수 지정
44
- # 0.1.2
74
+ ## 0.1.2
45
75
  - repeatutils 의 get_repeat_section 에서 하나의 값이 여러 구간에서 반복될때 마지막 구간만 나오는 부분 수정
46
76
  - repeatutils 의 get_repeat_section 및 get_stan_repeat_section 에서 추출되는 구간의 마지막 값이 +1 이 되는 부분 수정
47
- # 0.1.1
77
+ ## 0.1.1
48
78
  - repeatutils.py 추가
49
79
  - utils.py 에서 repeat 관련 함수 제거
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
  name = "utilskit"
9
9
 
10
10
  # 버전
11
- version = "0.2.16"
11
+ version = "0.2.17"
12
12
 
13
13
  # 패키지 설명 (짧은 설명)
14
14
  description = "다양한 편의성 함수 모음 패키지"
@@ -507,7 +507,7 @@ def get_section(data, repeat, mode='a', key=None,
507
507
  def section_union(main_section, sub_section, mode):
508
508
 
509
509
  if len(main_section) == 0 or len(sub_section) == 0:
510
- if mode == ' &':
510
+ if mode == '&':
511
511
  return []
512
512
  else:
513
513
  return main_section
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utilskit
3
- Version: 0.2.16
3
+ Version: 0.2.17
4
4
  Summary: 다양한 편의성 함수 모음 패키지
5
5
  Author-email: kimyh <kim_yh663927@naver.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -17,52 +17,82 @@ Requires-Dist: tqdm==4.67.1
17
17
  Requires-Dist: xlrd==2.0.2
18
18
  Requires-Dist: openpyxl==3.1.5
19
19
 
20
- # 0.2.16
20
+ # install
21
+ ```cmd
22
+ pip install utilskit
23
+ ```
24
+
25
+ # 개요
26
+
27
+ 데이터 전처리를 위한 편의용 연산함수 모음 toolkit
28
+
29
+ - classificationutils
30
+ confusion maxtrix 생성 지원
31
+ - dataframeutils
32
+ pandas dataframe 에 대한 전처리 지원
33
+ 각종 확장자 대응 불러오기, 시간컬럼보정, 결측치보완, 유효성 평가 지원
34
+ - dbutils
35
+ query 날리기, dataframe 전체 DB 삽입, DB테이블컬럼추출 등 지원
36
+ - plotutils
37
+ python matplotlib 함수 기반 이미지 생성 간편화 지원
38
+ - repeatutils
39
+ data array 또는 list 에서 반복되는 구간을 입력된 변수 논리에 따라 산정하는 전처리연산 지원
40
+ - timeutils
41
+ 입력된 수치의 시, 분, 초 반환, 입력된 시작~끝일 사이의 전체 날짜 문자열 생성, 현재 시간에 대한 유동적 추출 지원
42
+ - utils
43
+ 에러 메세지 추출 등 일반적인 편의성 함수 연산 지원
44
+
45
+ # version
46
+ ## 0.2.17
47
+ - logutils 기능 완전 삭제 > logie 패키지로 분리
48
+ ## 0.2.16
21
49
  - repeatutils 의 section_union 에서 mode 를 & 으로 하고 sub 또는 main section 이 빈 리스트인 경우 빈리스트 [] 를 리턴 하도록 수정
22
- # 0.2.15
50
+ ### 0.2.16.1
51
+ - 조건문에서 & 앞에 띄어쓰기가 하나 포함되어있어 정상적 연산이 되지 않는 부분 수정
52
+ ## 0.2.15
23
53
  - repeatutils 의 section_union 에서 결과가 빈값일때 에러가 나는 현상 수정
24
- # 0.2.14
54
+ ## 0.2.14
25
55
  - repeatutils 의 min_key 를 설정했을 때 min_equal=False 로 두는 경우 정상적인 구간 탐색을 못하는 현상 수정
26
- # 0.2.13
56
+ ## 0.2.13
27
57
  - repeatutils 에 section_union 함수 추가
28
- ## 0.2.13.1
58
+ ### 0.2.13.1
29
59
  - rpu.get_section 을 써서 에러가 난 부분 수정
30
- # 0.2.12
60
+ ## 0.2.12
31
61
  - dataframeutils 의 fill_repeat_nan 함수가 NaN 이 딱 하나만 있는 경우 보정하지 못하는 현상 수정
32
- # 0.2.11
62
+ ## 0.2.11
33
63
  - dataframeutils 의 fill_repeat_nan 함수가 3 이하 반복되는 NaN 이 아닌 3 이상 반복되는 NaN 구간에 대해 보정하는 현상 수정
34
- # 0.2.10
64
+ ## 0.2.10
35
65
  - repeatutils 에서 between 이 정상작동하지 않는 현상 수정
36
- ## 0.2.10.1
66
+ ### 0.2.10.1
37
67
  - 버전 업로드 에러 수정
38
- ## 0.2.10.2
68
+ ### 0.2.10.2
39
69
  - 함수 내부 print 제거
40
- # 0.2.9
70
+ ## 0.2.9
41
71
  - repeatuils 에서 정수형 list 를 넣었을때 float 으로 변경되도록 수정
42
- # 0.2.8
72
+ ## 0.2.8
43
73
  - dbutils 에서 db 의 컬럼명을 리스트로 추출하는 get_db_name 함수 추가
44
- ## 0.2.8.1
74
+ ### 0.2.8.1
45
75
  - __all__ 에 get_db_name 추가해서 사용가능하도록 설정
46
- # 0.2.7
76
+ ## 0.2.7
47
77
  - repeatutils 에서 정수형 list 를 넣었을때 key 를 통한 구간 파악이 되지 않는 현상 수정
48
- # 0.2.6
78
+ ## 0.2.6
49
79
  - dataframeutils 의 fill_repeat_nan 의 에러 수정
50
- # 0.2.5
80
+ ## 0.2.5
51
81
  - xlsx 읽는 패키지 install 추가
52
- # 0.2.4
82
+ ## 0.2.4
53
83
  - repeatutils 의 에러 제거
54
- # 0.2.3
84
+ ## 0.2.3
55
85
  - dbutils 에 대한 업데이트 진행
56
- # 0.2.2
86
+ ## 0.2.2
57
87
  - build 방식 변경
58
- # 0.2.1
88
+ ## 0.2.1
59
89
  - repeatutila 에 get_section 함수 추가
60
- # 0.2.0
90
+ ## 0.2.0
61
91
  - 정식 최초 배포버전
62
92
  - 각 함수의 사용성 강화 및 비활성 함수 지정
63
- # 0.1.2
93
+ ## 0.1.2
64
94
  - repeatutils 의 get_repeat_section 에서 하나의 값이 여러 구간에서 반복될때 마지막 구간만 나오는 부분 수정
65
95
  - repeatutils 의 get_repeat_section 및 get_stan_repeat_section 에서 추출되는 구간의 마지막 값이 +1 이 되는 부분 수정
66
- # 0.1.1
96
+ ## 0.1.1
67
97
  - repeatutils.py 추가
68
98
  - utils.py 에서 repeat 관련 함수 제거
@@ -14,8 +14,6 @@ utilskit/dataframeutils/__init__.py
14
14
  utilskit/dataframeutils/dataframeutils.py
15
15
  utilskit/dbutils/__init__.py
16
16
  utilskit/dbutils/dbutils.py
17
- utilskit/logutils/__init__.py
18
- utilskit/logutils/logutils.py
19
17
  utilskit/plotutils/__init__.py
20
18
  utilskit/plotutils/plotutils.py
21
19
  utilskit/repeatutils/__init__.py
@@ -1 +0,0 @@
1
- from .logutils import *
@@ -1,215 +0,0 @@
1
- import sys
2
- import os
3
- from tqdm import tqdm
4
- import shutil
5
-
6
- import logging
7
- from logging import handlers
8
-
9
- import warnings
10
- warnings.filterwarnings('ignore')
11
-
12
- __all__ = ['get_logger', 'log_sort']
13
-
14
- # def get_logger(name, save_path, log_file_name, time_handler=True, console_display=False, logging_level='info'):
15
- # '''
16
- # 로거 함수
17
-
18
- # parameters
19
- # ----------
20
- # get: str
21
- # log 생성용 이름.
22
-
23
- # log_file_name: str
24
- # logger 파일을 생성할 때 적용할 파일 이름 + path.
25
-
26
- # time_handler: bool (default: True)
27
- # 자정(00:00) 을 넘긴 경우 그때까지 쌓인 기록을 이전 날짜 기록으로 뺄지 여부
28
-
29
- # console_display: bool (default: False)
30
- # 로그 기록값을 콘솔에 표시할것인지 여부
31
-
32
- # logging_level: str
33
- # logger 를 표시할 수준. (notset < debug < info < warning < error < critical)
34
-
35
- # returns
36
- # -------
37
- # logger: logger
38
- # 로거를 적용할 수 있는 로거 변수
39
- # '''
40
- # import logging
41
- # from logging import handlers
42
- # os.makedirs(save_path, exist_ok=True)
43
-
44
- # logger = logging.getLogger(name)
45
- # if logging_level == 'critical':
46
- # logger.setLevel(logging.CRITICAL)
47
- # if logging_level == 'error':
48
- # logger.setLevel(logging.ERROR)
49
- # if logging_level == 'warning':
50
- # logger.setLevel(logging.WARNING)
51
- # if logging_level == 'info':
52
- # logger.setLevel(logging.INFO)
53
- # if logging_level == 'debug':
54
- # logger.setLevel(logging.DEBUG)
55
- # if logging_level == 'notset':
56
- # logger.setLevel(logging.NOTSET)
57
-
58
- # # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
59
- # formatter = logging.Formatter('%(asctime)s level:%(levelname)s %(filename)s line %(lineno)d %(message)s')
60
- # if console_display:
61
- # stream_handler = logging.StreamHandler()
62
- # stream_handler.setFormatter(formatter)
63
- # logger.addHandler(stream_handler)
64
-
65
- # if time_handler:
66
- # file_handler = handlers.TimedRotatingFileHandler(
67
- # filename=f'{save_path}/{log_file_name}',
68
- # when="midnight",
69
- # interval=1,
70
- # backupCount=30,
71
- # encoding="utf-8")
72
- # file_handler.suffix = '%Y%m%d'
73
- # else:
74
- # file_handler = logging.FileHandler(f'{save_path}/{log_file_name}')
75
-
76
- # file_handler.setFormatter(formatter)
77
- # logger.addHandler(file_handler)
78
- # return logger
79
-
80
-
81
-
82
- # 커스텀 필터: INFO 이하만 통과
83
- class MaxLevelFilter(logging.Filter):
84
- def __init__(self, max_level):
85
- self.max_level = max_level
86
- def filter(self, record):
87
- return record.levelno <= self.max_level
88
-
89
-
90
- def get_logger(log_path=None, log_name='app', rollover=True):#, console_display=False, logging_level='info'):
91
-
92
- if log_path is None:
93
- log_path = os.path.join(os.getcwd(), 'log')
94
-
95
- # 로그 저장 경로 생성
96
- os.makedirs(log_path, exist_ok=True)
97
-
98
- # 경로
99
- file_h_path = os.path.join(log_path, f'{log_name}.log')
100
- info_h_path = os.path.join(log_path, 'info.log')
101
- error_h_path = os.path.join(log_path, 'error.log')
102
-
103
- '''
104
- 로그 수준 정도(낮은 순)
105
- logging.NOTSET
106
- logging.DEBUG
107
- logging.INFO
108
- logging.WARNING
109
- logging.ERROR
110
- logging.CRITICAL
111
- '''
112
-
113
- # 로거 생성
114
- logger = logging.getLogger('app')
115
-
116
- # 로거 전체 기준 수준 설정
117
- logger.setLevel(logging.DEBUG)
118
-
119
- # 파일 핸들러 설정
120
- if rollover:
121
- file_handler = handlers.TimedRotatingFileHandler(
122
- filename=file_h_path,
123
- when="midnight",
124
- interval=1,
125
- backupCount=30,
126
- encoding="utf-8")
127
- file_handler.suffix = '%Y%m%d'
128
-
129
- info_handler = handlers.TimedRotatingFileHandler(
130
- filename=info_h_path,
131
- when="midnight",
132
- interval=1,
133
- backupCount=30,
134
- encoding="utf-8")
135
- info_handler.suffix = '%Y%m%d'
136
-
137
- error_handler = handlers.TimedRotatingFileHandler(
138
- filename=error_h_path,
139
- when="midnight",
140
- interval=1,
141
- backupCount=30,
142
- encoding="utf-8")
143
- error_handler.suffix = '%Y%m%d'
144
- else:
145
- file_handler = logging.FileHandler(file_h_path)
146
- info_handler = logging.FileHandler(info_h_path)
147
- error_handler = logging.FileHandler(error_h_path)
148
-
149
- # 핸들러 수준 설정
150
- file_handler.setLevel(logging.INFO)
151
-
152
- info_handler.setLevel(logging.INFO)
153
- info_handler.addFilter(MaxLevelFilter(logging.INFO)) # info 수준만 기록
154
-
155
- error_handler.setLevel(logging.ERROR)
156
- error_handler.addFilter(MaxLevelFilter(logging.ERROR)) # error 수준만 기록
157
-
158
- # formatter 설정
159
- formatter = logging.Formatter('%(asctime)s level:%(levelname)s %(filename)s line %(lineno)d %(message)s')
160
- # if console_display:
161
- # stream_handler = logging.StreamHandler()
162
- # stream_handler.setFormatter(formatter)
163
- # logger.addHandler(stream_handler)
164
-
165
- # 핸들러에 formatter 연결
166
- file_handler.setFormatter(formatter)
167
- info_handler.setFormatter(formatter)
168
- error_handler.setFormatter(formatter)
169
-
170
- # 로거에 핸들러 추가
171
- logger.addHandler(file_handler)
172
- logger.addHandler(info_handler)
173
- logger.addHandler(error_handler)
174
-
175
- # 같은 핸들러 인스턴스에 여러 로거를 추가하는 것은 추후 추가
176
- return logger
177
-
178
-
179
- def log_sort(log_path=None):
180
- if log_path is None:
181
- log_path = os.path.join(os.getcwd(), 'log')
182
-
183
- os.makedirs(f'{log_path}_history', exist_ok=True)
184
- log_file_list = os.listdir(log_path)
185
- log_file_list.sort()
186
-
187
- log_dict = {}
188
- for log_file in log_file_list:
189
- log_name = log_file.split('.')[0]
190
- date = log_file.split('.')[-1]
191
- if date == 'log':
192
- continue
193
- try:
194
- log_dict[log_name].append(log_file)
195
- except KeyError:
196
- log_dict[log_name] = [log_file]
197
-
198
-
199
- for log_name, log_list in log_dict.items():
200
- for log_file in tqdm(log_list):
201
- date = log_file.split('.')[-1]
202
- yyyy = date[:4]
203
- mm = date[4:6]
204
- # dd = date[6:]
205
- move_path = f'{log_path}_history/{yyyy}/{mm}/{log_name}'
206
- os.makedirs(move_path, exist_ok=True)
207
- shutil.move(
208
- f'{log_path}/{log_file}',
209
- f'{move_path}/{log_file}'
210
- )
211
-
212
-
213
- if __name__ == "__main__":
214
- root_path = ''
215
- log_sort(root_path)
File without changes
File without changes
File without changes