Show More
@@ -1,10 +1,11 b'' | |||
|
1 | 1 | |
|
2 | 2 | |
|
3 | 3 | ################################################################################ |
|
4 |
## |
|
|
4 | ## RHODECODE COMMUNITY EDITION CONFIGURATION ## | |
|
5 | 5 | ################################################################################ |
|
6 | 6 | |
|
7 | 7 | [DEFAULT] |
|
8 | ## Debug flag sets all loggers to debug, and enables request tracking | |
|
8 | 9 | debug = true |
|
9 | 10 | |
|
10 | 11 | ################################################################################ |
@@ -414,6 +415,7 b' search.location = %(here)s/data/index' | |||
|
414 | 415 | ######################################## |
|
415 | 416 | ## channelstream enables persistent connections and live notification |
|
416 | 417 | ## in the system. It's also used by the chat system |
|
418 | ||
|
417 | 419 | channelstream.enabled = false |
|
418 | 420 | |
|
419 | 421 | ## server address for channelstream server on the backend |
@@ -490,14 +492,6 b' appenlight.request_keys_blacklist =' | |||
|
490 | 492 | ## (by default the client ignores own entries: appenlight_client.client) |
|
491 | 493 | appenlight.log_namespace_blacklist = |
|
492 | 494 | |
|
493 | ||
|
494 | ################################################################################ | |
|
495 | ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ## | |
|
496 | ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ## | |
|
497 | ## execute malicious code after an exception is raised. ## | |
|
498 | ################################################################################ | |
|
499 | #set debug = false | |
|
500 | ||
|
501 | 495 | # enable debug style page |
|
502 | 496 | debug_style = true |
|
503 | 497 |
@@ -1,11 +1,12 b'' | |||
|
1 | 1 | |
|
2 | 2 | |
|
3 | 3 | ################################################################################ |
|
4 |
## |
|
|
4 | ## RHODECODE COMMUNITY EDITION CONFIGURATION ## | |
|
5 | 5 | ################################################################################ |
|
6 | 6 | |
|
7 | 7 | [DEFAULT] |
|
8 | debug = true | |
|
8 | ## Debug flag sets all loggers to debug, and enables request tracking | |
|
9 | debug = false | |
|
9 | 10 | |
|
10 | 11 | ################################################################################ |
|
11 | 12 | ## EMAIL CONFIGURATION ## |
@@ -389,6 +390,7 b' search.location = %(here)s/data/index' | |||
|
389 | 390 | ######################################## |
|
390 | 391 | ## channelstream enables persistent connections and live notification |
|
391 | 392 | ## in the system. It's also used by the chat system |
|
393 | ||
|
392 | 394 | channelstream.enabled = false |
|
393 | 395 | |
|
394 | 396 | ## server address for channelstream server on the backend |
@@ -466,14 +468,6 b' appenlight.request_keys_blacklist =' | |||
|
466 | 468 | appenlight.log_namespace_blacklist = |
|
467 | 469 | |
|
468 | 470 | |
|
469 | ################################################################################ | |
|
470 | ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ## | |
|
471 | ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ## | |
|
472 | ## execute malicious code after an exception is raised. ## | |
|
473 | ################################################################################ | |
|
474 | set debug = false | |
|
475 | ||
|
476 | ||
|
477 | 471 | ########################################### |
|
478 | 472 | ### MAIN RHODECODE DATABASE CONFIG ### |
|
479 | 473 | ########################################### |
@@ -524,6 +518,7 b' vcs.scm_app_implementation = http' | |||
|
524 | 518 | ## Push/Pull operations hooks protocol, available options are: |
|
525 | 519 | ## `http` - use http-rpc backend (default) |
|
526 | 520 | vcs.hooks.protocol = http |
|
521 | ||
|
527 | 522 | ## Host on which this instance is listening for hooks. If vcsserver is in other location |
|
528 | 523 | ## this should be adjusted. |
|
529 | 524 | vcs.hooks.host = 127.0.0.1 |
@@ -3,6 +3,16 b'' | |||
|
3 | 3 | Enabling Debug Mode |
|
4 | 4 | ------------------- |
|
5 | 5 | |
|
6 | Debug Mode will enable debug logging, and request tracking middleware. Debug Mode | |
|
7 | enabled DEBUG log-level which allows tracking various information about authentication | |
|
8 | failures, LDAP connection, email etc. | |
|
9 | ||
|
10 | The request tracking will add a special | |
|
11 | unique ID: `| req_id:00000000-0000-0000-0000-000000000000` at the end of each log line. | |
|
12 | The req_id is the same for each individual requests, it means that if you want to | |
|
13 | track particular user logs only, and exclude other concurrent ones | |
|
14 | simply grep by `req_id` uuid which you'll have to find for the individual request. | |
|
15 | ||
|
6 | 16 | To enable debug mode on a |RCE| instance you need to set the debug property |
|
7 | 17 | in the :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file. To |
|
8 | 18 | do this, use the following steps |
@@ -11,14 +21,10 b' 1. Open the file and set the ``debug`` l' | |||
|
11 | 21 | 2. Restart you instance using the ``rccontrol restart`` command, |
|
12 | 22 | see the following example: |
|
13 | 23 | |
|
14 | You can also set the log level, the follow are the valid options; | |
|
15 | ``debug``, ``info``, ``warning``, or ``fatal``. | |
|
16 | ||
|
17 | 24 | .. code-block:: ini |
|
18 | 25 | |
|
19 | 26 | [DEFAULT] |
|
20 | 27 | debug = true |
|
21 | pdebug = false | |
|
22 | 28 | |
|
23 | 29 | .. code-block:: bash |
|
24 | 30 | |
@@ -27,6 +33,7 b' You can also set the log level, the foll' | |||
|
27 | 33 | Instance "enterprise-1" successfully stopped. |
|
28 | 34 | Instance "enterprise-1" successfully started. |
|
29 | 35 | |
|
36 | ||
|
30 | 37 | Debug and Logging Configuration |
|
31 | 38 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
32 | 39 | |
@@ -47,7 +54,7 b' the ``debug`` level.' | |||
|
47 | 54 | ### LOGGING CONFIGURATION #### |
|
48 | 55 | ################################ |
|
49 | 56 | [loggers] |
|
50 | keys = root, sqlalchemy, rhodecode, ssh_wrapper | |
|
57 | keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper | |
|
51 | 58 | |
|
52 | 59 | [handlers] |
|
53 | 60 | keys = console, console_sql, file, file_rotating |
@@ -62,11 +69,16 b' the ``debug`` level.' | |||
|
62 | 69 | level = NOTSET |
|
63 | 70 | handlers = console |
|
64 | 71 | |
|
65 |
[logger_ |
|
|
72 | [logger_sqlalchemy] | |
|
73 | level = INFO | |
|
74 | handlers = console_sql | |
|
75 | qualname = sqlalchemy.engine | |
|
76 | propagate = 0 | |
|
77 | ||
|
78 | [logger_beaker] | |
|
66 | 79 | level = DEBUG |
|
67 | 80 | handlers = |
|
68 |
qualname = |
|
|
69 | ## "level = DEBUG" logs the route matched and routing variables. | |
|
81 | qualname = beaker.container | |
|
70 | 82 | propagate = 1 |
|
71 | 83 | |
|
72 | 84 | [logger_rhodecode] |
@@ -75,11 +87,16 b' the ``debug`` level.' | |||
|
75 | 87 | qualname = rhodecode |
|
76 | 88 | propagate = 1 |
|
77 | 89 | |
|
78 |
[logger_s |
|
|
79 |
level = |
|
|
80 |
handlers = |
|
|
81 |
qualname = s |
|
|
82 |
propagate = |
|
|
90 | [logger_ssh_wrapper] | |
|
91 | level = DEBUG | |
|
92 | handlers = | |
|
93 | qualname = ssh_wrapper | |
|
94 | propagate = 1 | |
|
95 | ||
|
96 | [logger_celery] | |
|
97 | level = DEBUG | |
|
98 | handlers = | |
|
99 | qualname = celery | |
|
83 | 100 | |
|
84 | 101 | ############## |
|
85 | 102 | ## HANDLERS ## |
@@ -87,19 +104,19 b' the ``debug`` level.' | |||
|
87 | 104 | |
|
88 | 105 | [handler_console] |
|
89 | 106 | class = StreamHandler |
|
90 | args = (sys.stderr,) | |
|
91 |
level = |
|
|
107 | args = (sys.stderr, ) | |
|
108 | level = DEBUG | |
|
92 | 109 | formatter = generic |
|
93 | 110 | |
|
94 | 111 | [handler_console_sql] |
|
95 | 112 | class = StreamHandler |
|
96 | args = (sys.stderr,) | |
|
97 |
level = |
|
|
113 | args = (sys.stderr, ) | |
|
114 | level = INFO | |
|
98 | 115 | formatter = generic |
|
99 | 116 | |
|
100 | 117 | [handler_file] |
|
101 | 118 | class = FileHandler |
|
102 | args = ('rhodecode.log', 'a',) | |
|
119 | args = ('rhodecode_debug.log', 'a',) | |
|
103 | 120 | level = INFO |
|
104 | 121 | formatter = generic |
|
105 | 122 | |
@@ -107,6 +124,25 b' the ``debug`` level.' | |||
|
107 | 124 | class = logging.handlers.TimedRotatingFileHandler |
|
108 | 125 | # 'D', 5 - rotate every 5days |
|
109 | 126 | # you can set 'h', 'midnight' |
|
110 | args = ('rhodecode.log', 'D', 5, 10,) | |
|
127 | args = ('rhodecode_debug_rotated.log', 'D', 5, 10,) | |
|
111 | 128 | level = INFO |
|
112 | 129 | formatter = generic |
|
130 | ||
|
131 | ################ | |
|
132 | ## FORMATTERS ## | |
|
133 | ################ | |
|
134 | ||
|
135 | [formatter_generic] | |
|
136 | class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter | |
|
137 | format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | |
|
138 | datefmt = %Y-%m-%d %H:%M:%S | |
|
139 | ||
|
140 | [formatter_color_formatter] | |
|
141 | class = rhodecode.lib.logging_formatter.ColorFormatter | |
|
142 | format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | |
|
143 | datefmt = %Y-%m-%d %H:%M:%S | |
|
144 | ||
|
145 | [formatter_color_formatter_sql] | |
|
146 | class = rhodecode.lib.logging_formatter.ColorFormatterSql | |
|
147 | format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | |
|
148 | datefmt = %Y-%m-%d %H:%M:%S No newline at end of file |
@@ -89,6 +89,10 b' def make_pyramid_app(global_config, **se' | |||
|
89 | 89 | # will be replaced by the value of the environment variable "NAME" in this case. |
|
90 | 90 | start_time = time.time() |
|
91 | 91 | |
|
92 | debug = asbool(global_config.get('debug')) | |
|
93 | if debug: | |
|
94 | enable_debug() | |
|
95 | ||
|
92 | 96 | environ = {'ENV_{}'.format(key): value for key, value in os.environ.items()} |
|
93 | 97 | |
|
94 | 98 | global_config = _substitute_values(global_config, environ) |
@@ -118,6 +122,7 b' def make_pyramid_app(global_config, **se' | |||
|
118 | 122 | total_time = time.time() - start_time |
|
119 | 123 | log.info('Pyramid app `%s` created and configured in %.2fs', |
|
120 | 124 | pyramid_app.func_name, total_time) |
|
125 | ||
|
121 | 126 | return pyramid_app |
|
122 | 127 | |
|
123 | 128 | |
@@ -432,6 +437,114 b' def sanitize_settings_and_apply_defaults' | |||
|
432 | 437 | return settings |
|
433 | 438 | |
|
434 | 439 | |
|
440 | def enable_debug(): | |
|
441 | """ | |
|
442 | Helper to enable debug on running instance | |
|
443 | :return: | |
|
444 | """ | |
|
445 | import tempfile | |
|
446 | import textwrap | |
|
447 | import logging.config | |
|
448 | ||
|
449 | ini_template = textwrap.dedent(""" | |
|
450 | ##################################### | |
|
451 | ### DEBUG LOGGING CONFIGURATION #### | |
|
452 | ##################################### | |
|
453 | [loggers] | |
|
454 | keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper | |
|
455 | ||
|
456 | [handlers] | |
|
457 | keys = console, console_sql | |
|
458 | ||
|
459 | [formatters] | |
|
460 | keys = generic, color_formatter, color_formatter_sql | |
|
461 | ||
|
462 | ############# | |
|
463 | ## LOGGERS ## | |
|
464 | ############# | |
|
465 | [logger_root] | |
|
466 | level = NOTSET | |
|
467 | handlers = console | |
|
468 | ||
|
469 | [logger_sqlalchemy] | |
|
470 | level = INFO | |
|
471 | handlers = console_sql | |
|
472 | qualname = sqlalchemy.engine | |
|
473 | propagate = 0 | |
|
474 | ||
|
475 | [logger_beaker] | |
|
476 | level = DEBUG | |
|
477 | handlers = | |
|
478 | qualname = beaker.container | |
|
479 | propagate = 1 | |
|
480 | ||
|
481 | [logger_rhodecode] | |
|
482 | level = DEBUG | |
|
483 | handlers = | |
|
484 | qualname = rhodecode | |
|
485 | propagate = 1 | |
|
486 | ||
|
487 | [logger_ssh_wrapper] | |
|
488 | level = DEBUG | |
|
489 | handlers = | |
|
490 | qualname = ssh_wrapper | |
|
491 | propagate = 1 | |
|
492 | ||
|
493 | [logger_celery] | |
|
494 | level = DEBUG | |
|
495 | handlers = | |
|
496 | qualname = celery | |
|
497 | ||
|
498 | ||
|
499 | ############## | |
|
500 | ## HANDLERS ## | |
|
501 | ############## | |
|
502 | ||
|
503 | [handler_console] | |
|
504 | class = StreamHandler | |
|
505 | args = (sys.stderr, ) | |
|
506 | level = DEBUG | |
|
507 | formatter = color_formatter | |
|
508 | ||
|
509 | [handler_console_sql] | |
|
510 | # "level = DEBUG" logs SQL queries and results. | |
|
511 | # "level = INFO" logs SQL queries. | |
|
512 | # "level = WARN" logs neither. (Recommended for production systems.) | |
|
513 | class = StreamHandler | |
|
514 | args = (sys.stderr, ) | |
|
515 | level = WARN | |
|
516 | formatter = color_formatter_sql | |
|
517 | ||
|
518 | ################ | |
|
519 | ## FORMATTERS ## | |
|
520 | ################ | |
|
521 | ||
|
522 | [formatter_generic] | |
|
523 | class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter | |
|
524 | format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | %(req_id)s | |
|
525 | datefmt = %Y-%m-%d %H:%M:%S | |
|
526 | ||
|
527 | [formatter_color_formatter] | |
|
528 | class = rhodecode.lib.logging_formatter.ColorRequestTrackingFormatter | |
|
529 | format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | %(req_id)s | |
|
530 | datefmt = %Y-%m-%d %H:%M:%S | |
|
531 | ||
|
532 | [formatter_color_formatter_sql] | |
|
533 | class = rhodecode.lib.logging_formatter.ColorFormatterSql | |
|
534 | format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | |
|
535 | datefmt = %Y-%m-%d %H:%M:%S | |
|
536 | """) | |
|
537 | ||
|
538 | with tempfile.NamedTemporaryFile(prefix='rc_debug_logging_', suffix='.ini', | |
|
539 | delete=False) as f: | |
|
540 | log.info('Saved Temporary DEBUG config at %s', f.name) | |
|
541 | f.write(ini_template) | |
|
542 | ||
|
543 | logging.config.fileConfig(f.name) | |
|
544 | log.debug('DEBUG MODE ON') | |
|
545 | os.remove(f.name) | |
|
546 | ||
|
547 | ||
|
435 | 548 | def _sanitize_appenlight_settings(settings): |
|
436 | 549 | _bool_setting(settings, 'appenlight', 'false') |
|
437 | 550 |
@@ -14,7 +14,6 b' function registerRCRoutes() {' | |||
|
14 | 14 | // routes registration |
|
15 | 15 | pyroutes.register('favicon', '/favicon.ico', []); |
|
16 | 16 | pyroutes.register('robots', '/robots.txt', []); |
|
17 | pyroutes.register('auth_home', '/_admin/auth*traverse', []); | |
|
18 | 17 | pyroutes.register('global_integrations_new', '/_admin/integrations/new', []); |
|
19 | 18 | pyroutes.register('global_integrations_home', '/_admin/integrations', []); |
|
20 | 19 | pyroutes.register('global_integrations_list', '/_admin/integrations/%(integration)s', ['integration']); |
@@ -30,6 +29,7 b' function registerRCRoutes() {' | |||
|
30 | 29 | pyroutes.register('repo_integrations_list', '/%(repo_name)s/settings/integrations/%(integration)s', ['repo_name', 'integration']); |
|
31 | 30 | pyroutes.register('repo_integrations_create', '/%(repo_name)s/settings/integrations/%(integration)s/new', ['repo_name', 'integration']); |
|
32 | 31 | pyroutes.register('repo_integrations_edit', '/%(repo_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_name', 'integration', 'integration_id']); |
|
32 | pyroutes.register('auth_home', '/_admin/auth*traverse', []); | |
|
33 | 33 | pyroutes.register('ops_ping', '/_admin/ops/ping', []); |
|
34 | 34 | pyroutes.register('ops_error_test', '/_admin/ops/error', []); |
|
35 | 35 | pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []); |
General Comments 0
You need to be logged in to leave comments.
Login now