Show More
@@ -143,21 +143,21 b' logview.pylons.util = #eee' | |||
|
143 | 143 | ######################################################### |
|
144 | 144 | #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db |
|
145 | 145 | sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode |
|
146 |
|
|
|
147 |
|
|
|
146 | sqlalchemy.db1.echo = True | |
|
147 | sqlalchemy.db1.pool_recycle = 3600 | |
|
148 | 148 | sqlalchemy.convert_unicode = true |
|
149 | 149 | |
|
150 | 150 | ################################ |
|
151 | 151 | ### LOGGING CONFIGURATION #### |
|
152 | 152 | ################################ |
|
153 | 153 | [loggers] |
|
154 | keys = root, routes, rhodecode, sqlalchemy,beaker,templates | |
|
154 | keys = root, routes, rhodecode, sqlalchemy, beaker, templates | |
|
155 | 155 | |
|
156 | 156 | [handlers] |
|
157 | keys = console | |
|
157 | keys = console, console_sql | |
|
158 | 158 | |
|
159 | 159 | [formatters] |
|
160 | keys = generic,color_formatter | |
|
160 | keys = generic, color_formatter, color_formatter_sql | |
|
161 | 161 | |
|
162 | 162 | ############# |
|
163 | 163 | ## LOGGERS ## |
@@ -168,32 +168,32 b' handlers = console' | |||
|
168 | 168 | |
|
169 | 169 | [logger_routes] |
|
170 | 170 | level = DEBUG |
|
171 |
handlers = |
|
|
171 | handlers = | |
|
172 | 172 | qualname = routes.middleware |
|
173 | 173 | # "level = DEBUG" logs the route matched and routing variables. |
|
174 |
propagate = |
|
|
174 | propagate = 1 | |
|
175 | 175 | |
|
176 | 176 | [logger_beaker] |
|
177 |
level = |
|
|
178 |
handlers = |
|
|
177 | level = DEBUG | |
|
178 | handlers = | |
|
179 | 179 | qualname = beaker.container |
|
180 |
propagate = |
|
|
180 | propagate = 1 | |
|
181 | 181 | |
|
182 | 182 | [logger_templates] |
|
183 | 183 | level = INFO |
|
184 |
handlers = |
|
|
184 | handlers = | |
|
185 | 185 | qualname = pylons.templating |
|
186 |
propagate = |
|
|
186 | propagate = 1 | |
|
187 | 187 | |
|
188 | 188 | [logger_rhodecode] |
|
189 | 189 | level = DEBUG |
|
190 |
handlers = |
|
|
190 | handlers = | |
|
191 | 191 | qualname = rhodecode |
|
192 |
propagate = |
|
|
192 | propagate = 1 | |
|
193 | 193 | |
|
194 | 194 | [logger_sqlalchemy] |
|
195 |
level = |
|
|
196 | handlers = console | |
|
195 | level = INFO | |
|
196 | handlers = console_sql | |
|
197 | 197 | qualname = sqlalchemy.engine |
|
198 | 198 | propagate = 0 |
|
199 | 199 | |
@@ -207,6 +207,12 b' args = (sys.stderr,)' | |||
|
207 | 207 | level = NOTSET |
|
208 | 208 | formatter = color_formatter |
|
209 | 209 | |
|
210 | [handler_console_sql] | |
|
211 | class = StreamHandler | |
|
212 | args = (sys.stderr,) | |
|
213 | level = NOTSET | |
|
214 | formatter = color_formatter_sql | |
|
215 | ||
|
210 | 216 | ################ |
|
211 | 217 | ## FORMATTERS ## |
|
212 | 218 | ################ |
@@ -218,4 +224,9 b' datefmt = %Y-%m-%d %H:%M:%S' | |||
|
218 | 224 | [formatter_color_formatter] |
|
219 | 225 | class=rhodecode.lib.colored_formatter.ColorFormatter |
|
220 | 226 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s |
|
227 | datefmt = %Y-%m-%d %H:%M:%S | |
|
228 | ||
|
229 | [formatter_color_formatter_sql] | |
|
230 | class=rhodecode.lib.colored_formatter.ColorFormatterSql | |
|
231 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s | |
|
221 | 232 | datefmt = %Y-%m-%d %H:%M:%S No newline at end of file |
@@ -29,7 +29,7 b' debug = true' | |||
|
29 | 29 | threadpool_workers = 5 |
|
30 | 30 | |
|
31 | 31 | ##max request before thread respawn |
|
32 |
threadpool_max_requests = |
|
|
32 | threadpool_max_requests = 10 | |
|
33 | 33 | |
|
34 | 34 | ##option to use threads of process |
|
35 | 35 | use_threadpool = true |
@@ -41,13 +41,14 b' port = 8001' | |||
|
41 | 41 | [app:main] |
|
42 | 42 | use = egg:rhodecode |
|
43 | 43 | full_stack = true |
|
44 |
static_files = |
|
|
44 | static_files = true | |
|
45 | 45 | lang=en |
|
46 | 46 | cache_dir = %(here)s/data |
|
47 | 47 | index_dir = %(here)s/data/index |
|
48 | app_instance_uuid = prod1234 | |
|
48 | 49 | cut_off_limit = 256000 |
|
49 | force_https = false | |
|
50 |
commit_parse_limit = |
|
|
50 | force_https = false | |
|
51 | commit_parse_limit = 50 | |
|
51 | 52 | use_gravatar = true |
|
52 | 53 | |
|
53 | 54 | #################################### |
@@ -142,57 +143,57 b' logview.pylons.util = #eee' | |||
|
142 | 143 | ######################################################### |
|
143 | 144 | #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db |
|
144 | 145 | sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode |
|
145 |
|
|
|
146 |
|
|
|
146 | sqlalchemy.db1.echo = True | |
|
147 | sqlalchemy.db1.pool_recycle = 3600 | |
|
147 | 148 | sqlalchemy.convert_unicode = true |
|
148 | 149 | |
|
149 | 150 | ################################ |
|
150 | 151 | ### LOGGING CONFIGURATION #### |
|
151 | 152 | ################################ |
|
152 | 153 | [loggers] |
|
153 | keys = root, routes, rhodecode, sqlalchemy,beaker,templates | |
|
154 | keys = root, routes, rhodecode, sqlalchemy, beaker, templates | |
|
154 | 155 | |
|
155 | 156 | [handlers] |
|
156 | keys = console | |
|
157 | keys = console, console_sql | |
|
157 | 158 | |
|
158 | 159 | [formatters] |
|
159 | keys = generic,color_formatter | |
|
160 | keys = generic, color_formatter, color_formatter_sql | |
|
160 | 161 | |
|
161 | 162 | ############# |
|
162 | 163 | ## LOGGERS ## |
|
163 | 164 | ############# |
|
164 | 165 | [logger_root] |
|
165 |
level = |
|
|
166 | level = NOTSET | |
|
166 | 167 | handlers = console |
|
167 | 168 | |
|
168 | 169 | [logger_routes] |
|
169 |
level = |
|
|
170 |
handlers = |
|
|
170 | level = DEBUG | |
|
171 | handlers = | |
|
171 | 172 | qualname = routes.middleware |
|
172 | 173 | # "level = DEBUG" logs the route matched and routing variables. |
|
173 |
propagate = |
|
|
174 | propagate = 1 | |
|
174 | 175 | |
|
175 | 176 | [logger_beaker] |
|
176 |
level = |
|
|
177 |
handlers = |
|
|
177 | level = DEBUG | |
|
178 | handlers = | |
|
178 | 179 | qualname = beaker.container |
|
179 |
propagate = |
|
|
180 | propagate = 1 | |
|
180 | 181 | |
|
181 | 182 | [logger_templates] |
|
182 | 183 | level = INFO |
|
183 |
handlers = |
|
|
184 | handlers = | |
|
184 | 185 | qualname = pylons.templating |
|
185 |
propagate = |
|
|
186 | propagate = 1 | |
|
186 | 187 | |
|
187 | 188 | [logger_rhodecode] |
|
188 | 189 | level = DEBUG |
|
189 |
handlers = |
|
|
190 | handlers = | |
|
190 | 191 | qualname = rhodecode |
|
191 |
propagate = |
|
|
192 | propagate = 1 | |
|
192 | 193 | |
|
193 | 194 | [logger_sqlalchemy] |
|
194 |
level = |
|
|
195 | handlers = console | |
|
195 | level = INFO | |
|
196 | handlers = console_sql | |
|
196 | 197 | qualname = sqlalchemy.engine |
|
197 | 198 | propagate = 0 |
|
198 | 199 | |
@@ -203,9 +204,15 b' propagate = 0' | |||
|
203 | 204 | [handler_console] |
|
204 | 205 | class = StreamHandler |
|
205 | 206 | args = (sys.stderr,) |
|
206 |
level = NO |
|
|
207 | level = INFO | |
|
207 | 208 | formatter = color_formatter |
|
208 | 209 | |
|
210 | [handler_console_sql] | |
|
211 | class = StreamHandler | |
|
212 | args = (sys.stderr,) | |
|
213 | level = WARN | |
|
214 | formatter = color_formatter_sql | |
|
215 | ||
|
209 | 216 | ################ |
|
210 | 217 | ## FORMATTERS ## |
|
211 | 218 | ################ |
@@ -217,4 +224,9 b' datefmt = %Y-%m-%d %H:%M:%S' | |||
|
217 | 224 | [formatter_color_formatter] |
|
218 | 225 | class=rhodecode.lib.colored_formatter.ColorFormatter |
|
219 | 226 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s |
|
227 | datefmt = %Y-%m-%d %H:%M:%S | |
|
228 | ||
|
229 | [formatter_color_formatter_sql] | |
|
230 | class=rhodecode.lib.colored_formatter.ColorFormatterSql | |
|
231 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s | |
|
220 | 232 | datefmt = %Y-%m-%d %H:%M:%S No newline at end of file |
@@ -142,57 +142,57 b' logview.pylons.util = #eee' | |||
|
142 | 142 | ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ### |
|
143 | 143 | ######################################################### |
|
144 | 144 | sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db |
|
145 |
|
|
|
146 |
|
|
|
145 | sqlalchemy.db1.echo = True | |
|
146 | sqlalchemy.db1.pool_recycle = 3600 | |
|
147 | 147 | sqlalchemy.convert_unicode = true |
|
148 | 148 | |
|
149 | 149 | ################################ |
|
150 | 150 | ### LOGGING CONFIGURATION #### |
|
151 | 151 | ################################ |
|
152 | 152 | [loggers] |
|
153 | keys = root, routes, rhodecode, sqlalchemy,beaker,templates | |
|
153 | keys = root, routes, rhodecode, sqlalchemy, beaker, templates | |
|
154 | 154 | |
|
155 | 155 | [handlers] |
|
156 | keys = console | |
|
156 | keys = console, console_sql | |
|
157 | 157 | |
|
158 | 158 | [formatters] |
|
159 | keys = generic,color_formatter | |
|
159 | keys = generic, color_formatter, color_formatter_sql | |
|
160 | 160 | |
|
161 | 161 | ############# |
|
162 | 162 | ## LOGGERS ## |
|
163 | 163 | ############# |
|
164 | 164 | [logger_root] |
|
165 |
level = |
|
|
165 | level = NOTSET | |
|
166 | 166 | handlers = console |
|
167 | 167 | |
|
168 | 168 | [logger_routes] |
|
169 |
level = |
|
|
170 |
handlers = |
|
|
169 | level = DEBUG | |
|
170 | handlers = | |
|
171 | 171 | qualname = routes.middleware |
|
172 | 172 | # "level = DEBUG" logs the route matched and routing variables. |
|
173 |
propagate = |
|
|
173 | propagate = 1 | |
|
174 | 174 | |
|
175 | 175 | [logger_beaker] |
|
176 |
level = |
|
|
177 |
handlers = |
|
|
176 | level = DEBUG | |
|
177 | handlers = | |
|
178 | 178 | qualname = beaker.container |
|
179 |
propagate = |
|
|
179 | propagate = 1 | |
|
180 | 180 | |
|
181 | 181 | [logger_templates] |
|
182 | 182 | level = INFO |
|
183 |
handlers = |
|
|
183 | handlers = | |
|
184 | 184 | qualname = pylons.templating |
|
185 |
propagate = |
|
|
185 | propagate = 1 | |
|
186 | 186 | |
|
187 | 187 | [logger_rhodecode] |
|
188 | 188 | level = DEBUG |
|
189 |
handlers = |
|
|
189 | handlers = | |
|
190 | 190 | qualname = rhodecode |
|
191 |
propagate = |
|
|
191 | propagate = 1 | |
|
192 | 192 | |
|
193 | 193 | [logger_sqlalchemy] |
|
194 |
level = |
|
|
195 | handlers = console | |
|
194 | level = INFO | |
|
195 | handlers = console_sql | |
|
196 | 196 | qualname = sqlalchemy.engine |
|
197 | 197 | propagate = 0 |
|
198 | 198 | |
@@ -203,9 +203,15 b' propagate = 0' | |||
|
203 | 203 | [handler_console] |
|
204 | 204 | class = StreamHandler |
|
205 | 205 | args = (sys.stderr,) |
|
206 |
level = NO |
|
|
206 | level = INFO | |
|
207 | 207 | formatter = color_formatter |
|
208 | 208 | |
|
209 | [handler_console_sql] | |
|
210 | class = StreamHandler | |
|
211 | args = (sys.stderr,) | |
|
212 | level = WARN | |
|
213 | formatter = color_formatter_sql | |
|
214 | ||
|
209 | 215 | ################ |
|
210 | 216 | ## FORMATTERS ## |
|
211 | 217 | ################ |
@@ -217,4 +223,9 b' datefmt = %Y-%m-%d %H:%M:%S' | |||
|
217 | 223 | [formatter_color_formatter] |
|
218 | 224 | class=rhodecode.lib.colored_formatter.ColorFormatter |
|
219 | 225 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s |
|
226 | datefmt = %Y-%m-%d %H:%M:%S | |
|
227 | ||
|
228 | [formatter_color_formatter_sql] | |
|
229 | class=rhodecode.lib.colored_formatter.ColorFormatterSql | |
|
230 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s | |
|
220 | 231 | datefmt = %Y-%m-%d %H:%M:%S No newline at end of file |
@@ -14,8 +14,35 b' COLORS = {' | |||
|
14 | 14 | 'WARNING': CYAN, # level 30 |
|
15 | 15 | 'INFO': GREEN, # level 20 |
|
16 | 16 | 'DEBUG': BLUE, # level 10 |
|
17 | 'SQL' : YELLOW | |
|
17 | 18 | } |
|
18 | 19 | |
|
20 | def one_space_trim(s): | |
|
21 | if s.find(" ") == -1: | |
|
22 | return s | |
|
23 | else: | |
|
24 | s = s.replace(' ', ' ') | |
|
25 | return one_space_trim(s) | |
|
26 | ||
|
27 | def format_sql(sql): | |
|
28 | sql = sql.replace('\n', '') | |
|
29 | sql = one_space_trim(sql) | |
|
30 | sql = sql\ | |
|
31 | .replace(',', ',\n\t')\ | |
|
32 | .replace('SELECT', '\n\tSELECT \n\t')\ | |
|
33 | .replace('UPDATE', '\n\tUPDATE \n\t')\ | |
|
34 | .replace('DELETE', '\n\tDELETE \n\t')\ | |
|
35 | .replace('FROM', '\n\tFROM')\ | |
|
36 | .replace('ORDER BY', '\n\tORDER BY')\ | |
|
37 | .replace('LIMIT', '\n\tLIMIT')\ | |
|
38 | .replace('WHERE', '\n\tWHERE')\ | |
|
39 | .replace('AND', '\n\tAND')\ | |
|
40 | .replace('LEFT', '\n\tLEFT')\ | |
|
41 | .replace('INNER', '\n\tINNER')\ | |
|
42 | .replace('INSERT', '\n\tINSERT')\ | |
|
43 | .replace('DELETE', '\n\tDELETE') | |
|
44 | return sql | |
|
45 | ||
|
19 | 46 | class ColorFormatter(logging.Formatter): |
|
20 | 47 | |
|
21 | 48 | def __init__(self, *args, **kwargs): |
@@ -26,13 +53,31 b' class ColorFormatter(logging.Formatter):' | |||
|
26 | 53 | """ |
|
27 | 54 | Changes record's levelname to use with COLORS enum |
|
28 | 55 | """ |
|
29 | ||
|
56 | ||
|
30 | 57 | levelname = record.levelname |
|
31 | 58 | start = COLOR_SEQ % (COLORS[levelname]) |
|
32 | 59 | def_record = logging.Formatter.format(self, record) |
|
33 | 60 | end = RESET_SEQ |
|
34 | ||
|
61 | ||
|
35 | 62 | colored_record = start + def_record + end |
|
36 | 63 | return colored_record |
|
37 | 64 | |
|
38 | logging.ColorFormatter = ColorFormatter | |
|
65 | ||
|
66 | class ColorFormatterSql(logging.Formatter): | |
|
67 | ||
|
68 | def __init__(self, *args, **kwargs): | |
|
69 | # can't do super(...) here because Formatter is an old school class | |
|
70 | logging.Formatter.__init__(self, *args, **kwargs) | |
|
71 | ||
|
72 | def format(self, record): | |
|
73 | """ | |
|
74 | Changes record's levelname to use with COLORS enum | |
|
75 | """ | |
|
76 | ||
|
77 | start = COLOR_SEQ % (COLORS['SQL']) | |
|
78 | def_record = format_sql(logging.Formatter.format(self, record)) | |
|
79 | end = RESET_SEQ | |
|
80 | ||
|
81 | colored_record = start + def_record + end | |
|
82 | return colored_record | |
|
83 |
@@ -7,53 +7,22 b' def color_sql(sql):' | |||
|
7 | 7 | COLOR_SEQ = "\033[1;%dm" |
|
8 | 8 | COLOR_SQL = YELLOW |
|
9 | 9 | normal = '\x1b[0m' |
|
10 |
return COLOR_SEQ % COLOR_SQL + sql + normal |
|
|
11 | ||
|
12 | def one_space_trim(s): | |
|
13 | if s.find(" ") == -1: | |
|
14 | return s | |
|
15 | else: | |
|
16 | s = s.replace(' ', ' ') | |
|
17 | return one_space_trim(s) | |
|
18 | ||
|
19 | def format_sql(sql): | |
|
20 | sql = color_sql(sql) | |
|
21 | sql = sql.replace('\n', '') | |
|
22 | sql = one_space_trim(sql) | |
|
23 | sql = sql\ | |
|
24 | .replace(',', ',\n\t')\ | |
|
25 | .replace('SELECT', '\n\tSELECT \n\t')\ | |
|
26 | .replace('UPDATE', '\n\tUPDATE \n\t')\ | |
|
27 | .replace('DELETE', '\n\tDELETE \n\t')\ | |
|
28 | .replace('FROM', '\n\tFROM')\ | |
|
29 | .replace('ORDER BY', '\n\tORDER BY')\ | |
|
30 | .replace('LIMIT', '\n\tLIMIT')\ | |
|
31 | .replace('WHERE', '\n\tWHERE')\ | |
|
32 | .replace('AND', '\n\tAND')\ | |
|
33 | .replace('LEFT', '\n\tLEFT')\ | |
|
34 | .replace('INNER', '\n\tINNER')\ | |
|
35 | .replace('INSERT', '\n\tINSERT')\ | |
|
36 | .replace('DELETE', '\n\tDELETE') | |
|
37 | return sql | |
|
38 | ||
|
10 | return COLOR_SEQ % COLOR_SQL + sql + normal | |
|
39 | 11 | |
|
40 | 12 | class TimerProxy(ConnectionProxy): |
|
41 | ||
|
13 | ||
|
42 | 14 | def __init__(self): |
|
43 | 15 | super(TimerProxy, self).__init__() |
|
44 | 16 | self.logging_name = 'timerProxy' |
|
45 | 17 | self.log = log.instance_logger(self, True) |
|
46 | ||
|
47 |
def cursor_execute(self, execute, cursor, statement, parameters, |
|
|
48 | ||
|
18 | ||
|
19 | def cursor_execute(self, execute, cursor, statement, parameters, | |
|
20 | context, executemany): | |
|
21 | ||
|
49 | 22 | now = time.time() |
|
50 | 23 | try: |
|
51 | self.log.info(">>>>> STARTING QUERY >>>>>") | |
|
24 | self.log.info(color_sql(">>>>> STARTING QUERY >>>>>")) | |
|
52 | 25 | return execute(cursor, statement, parameters, context) |
|
53 | 26 | finally: |
|
54 | 27 | total = time.time() - now |
|
55 | try: | |
|
56 | self.log.info(format_sql("Query: %s" % statement % parameters)) | |
|
57 | except TypeError: | |
|
58 | self.log.info(format_sql("Query: %s %s" % (statement, parameters))) | |
|
59 | self.log.info("<<<<< TOTAL TIME: %f <<<<<" % total) | |
|
28 | self.log.info(color_sql("<<<<< TOTAL TIME: %f <<<<<" % total)) |
General Comments 0
You need to be logged in to leave comments.
Login now