Show More
@@ -32,7 +32,7 b' threadpool_workers = 5' | |||
|
32 | 32 | threadpool_max_requests = 6 |
|
33 | 33 | |
|
34 | 34 | ##option to use threads of process |
|
35 |
use_threadpool = |
|
|
35 | use_threadpool = true | |
|
36 | 36 | |
|
37 | 37 | use = egg:Paste#http |
|
38 | 38 | host = 0.0.0.0 |
@@ -45,6 +45,7 b' 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 = develop | |
|
48 | 49 | cut_off_limit = 256000 |
|
49 | 50 | force_https = false |
|
50 | 51 | |
@@ -70,7 +71,7 b' celery.result.serialier = json' | |||
|
70 | 71 | celeryd.concurrency = 2 |
|
71 | 72 | #celeryd.log.file = celeryd.log |
|
72 | 73 | celeryd.log.level = debug |
|
73 |
celeryd.max.tasks.per.child = |
|
|
74 | celeryd.max.tasks.per.child = 1 | |
|
74 | 75 | |
|
75 | 76 | #tasks will never be sent to the queue, but executed locally instead. |
|
76 | 77 | celery.always.eager = false |
@@ -78,8 +79,9 b' celery.always.eager = false' | |||
|
78 | 79 | #################################### |
|
79 | 80 | ### BEAKER CACHE #### |
|
80 | 81 | #################################### |
|
81 |
beaker.cache.data_dir= |
|
|
82 |
beaker.cache.lock_dir= |
|
|
82 | beaker.cache.data_dir=%(here)s/data/cache/data | |
|
83 | beaker.cache.lock_dir=%(here)s/data/cache/lock | |
|
84 | ||
|
83 | 85 | beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long |
|
84 | 86 | |
|
85 | 87 | beaker.cache.super_short_term.type=memory |
@@ -138,21 +140,21 b' logview.pylons.util = #eee' | |||
|
138 | 140 | ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ### |
|
139 | 141 | ######################################################### |
|
140 | 142 | sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db |
|
141 |
|
|
|
142 |
|
|
|
143 | sqlalchemy.db1.echo = True | |
|
144 | sqlalchemy.db1.pool_recycle = 3600 | |
|
143 | 145 | sqlalchemy.convert_unicode = true |
|
144 | 146 | |
|
145 | 147 | ################################ |
|
146 | 148 | ### LOGGING CONFIGURATION #### |
|
147 | 149 | ################################ |
|
148 | 150 | [loggers] |
|
149 | keys = root, routes, rhodecode, sqlalchemy,beaker,templates | |
|
151 | keys = root, routes, rhodecode, sqlalchemy, beaker, templates | |
|
150 | 152 | |
|
151 | 153 | [handlers] |
|
152 | keys = console | |
|
154 | keys = console, console_sql | |
|
153 | 155 | |
|
154 | 156 | [formatters] |
|
155 | keys = generic,color_formatter | |
|
157 | keys = generic, color_formatter, color_formatter_sql | |
|
156 | 158 | |
|
157 | 159 | ############# |
|
158 | 160 | ## LOGGERS ## |
@@ -163,32 +165,32 b' handlers = console' | |||
|
163 | 165 | |
|
164 | 166 | [logger_routes] |
|
165 | 167 | level = DEBUG |
|
166 |
handlers = |
|
|
168 | handlers = | |
|
167 | 169 | qualname = routes.middleware |
|
168 | 170 | # "level = DEBUG" logs the route matched and routing variables. |
|
169 |
propagate = |
|
|
171 | propagate = 1 | |
|
170 | 172 | |
|
171 | 173 | [logger_beaker] |
|
172 |
level = |
|
|
173 |
handlers = |
|
|
174 | level = DEBUG | |
|
175 | handlers = | |
|
174 | 176 | qualname = beaker.container |
|
175 |
propagate = |
|
|
177 | propagate = 1 | |
|
176 | 178 | |
|
177 | 179 | [logger_templates] |
|
178 | 180 | level = INFO |
|
179 |
handlers = |
|
|
181 | handlers = | |
|
180 | 182 | qualname = pylons.templating |
|
181 |
propagate = |
|
|
183 | propagate = 1 | |
|
182 | 184 | |
|
183 | 185 | [logger_rhodecode] |
|
184 | 186 | level = DEBUG |
|
185 |
handlers = |
|
|
187 | handlers = | |
|
186 | 188 | qualname = rhodecode |
|
187 |
propagate = |
|
|
189 | propagate = 1 | |
|
188 | 190 | |
|
189 | 191 | [logger_sqlalchemy] |
|
190 |
level = |
|
|
191 | handlers = console | |
|
192 | level = INFO | |
|
193 | handlers = console_sql | |
|
192 | 194 | qualname = sqlalchemy.engine |
|
193 | 195 | propagate = 0 |
|
194 | 196 | |
@@ -202,6 +204,12 b' args = (sys.stderr,)' | |||
|
202 | 204 | level = NOTSET |
|
203 | 205 | formatter = color_formatter |
|
204 | 206 | |
|
207 | [handler_console_sql] | |
|
208 | class = StreamHandler | |
|
209 | args = (sys.stderr,) | |
|
210 | level = NOTSET | |
|
211 | formatter = color_formatter_sql | |
|
212 | ||
|
205 | 213 | ################ |
|
206 | 214 | ## FORMATTERS ## |
|
207 | 215 | ################ |
@@ -213,4 +221,9 b' datefmt = %Y-%m-%d %H:%M:%S' | |||
|
213 | 221 | [formatter_color_formatter] |
|
214 | 222 | class=rhodecode.lib.colored_formatter.ColorFormatter |
|
215 | 223 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s |
|
224 | datefmt = %Y-%m-%d %H:%M:%S | |
|
225 | ||
|
226 | [formatter_color_formatter_sql] | |
|
227 | class=rhodecode.lib.colored_formatter.ColorFormatterSql | |
|
228 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s | |
|
216 | 229 | datefmt = %Y-%m-%d %H:%M:%S No newline at end of file |
@@ -53,5 +53,4 b' Other topics' | |||
|
53 | 53 | .. _git: http://git-scm.com/ |
|
54 | 54 | .. _celery: http://celeryproject.org/ |
|
55 | 55 | .. _Sphinx: http://sphinx.pocoo.org/ |
|
56 | .. _GPL: http://www.gnu.org/licenses/gpl.html | |
|
57 | .. _vcs: http://pypi.python.org/pypi/vcs | |
|
56 | .. _vcs: http://pypi.python.org/pypi/vcs No newline at end of file |
@@ -10,7 +10,7 b' Setting up RhodeCode' | |||
|
10 | 10 | First, you will need to create a RhodeCode configuration file. Run the following |
|
11 | 11 | command to do this:: |
|
12 | 12 | |
|
13 | paster make-config RhodeCode production.ini | |
|
13 | paster make-config RhodeCode production.ini | |
|
14 | 14 | |
|
15 | 15 | - This will create the file `production.ini` in the current directory. This |
|
16 | 16 | configuration file contains the various settings for RhodeCode, e.g proxy port, |
@@ -23,7 +23,7 b' default ensure you properly adjust the d' | |||
|
23 | 23 | configuration file to use this other database. Create the databases by running |
|
24 | 24 | the following command:: |
|
25 | 25 | |
|
26 | paster setup-app production.ini | |
|
26 | paster setup-app production.ini | |
|
27 | 27 | |
|
28 | 28 | This will prompt you for a "root" path. This "root" path is the location where |
|
29 | 29 | RhodeCode will store all of its repositories on the current machine. After |
@@ -43,7 +43,7 b' for the initial admin account which ``se' | |||
|
43 | 43 | |
|
44 | 44 | You are now ready to use RhodeCode, to run it simply execute:: |
|
45 | 45 | |
|
46 | paster serve production.ini | |
|
46 | paster serve production.ini | |
|
47 | 47 | |
|
48 | 48 | - This command runs the RhodeCode server. The web app should be available at the |
|
49 | 49 | 127.0.0.1:5000. This ip and port is configurable via the production.ini |
@@ -60,7 +60,7 b' repositories. Then choose Add New Reposi' | |||
|
60 | 60 | the root. Test that you can browse your repository from within RhodeCode and then |
|
61 | 61 | try cloning your repository from RhodeCode with:: |
|
62 | 62 | |
|
63 | hg clone http://127.0.0.1:5000/<repository name> | |
|
63 | hg clone http://127.0.0.1:5000/<repository name> | |
|
64 | 64 | |
|
65 | 65 | where *repository name* is replaced by the name of your repository. |
|
66 | 66 | |
@@ -307,12 +307,11 b' http://wiki.pylonshq.com/display/pylonsc' | |||
|
307 | 307 | Apache as subdirectory |
|
308 | 308 | ---------------------- |
|
309 | 309 | |
|
310 | ||
|
311 | 310 | Apache subdirectory part:: |
|
312 | 311 | |
|
313 |
<Location / |
|
|
314 |
ProxyPass http://127.0.0.1:5 |
|
|
315 |
ProxyPassReverse http://127.0.0.1:5 |
|
|
312 | <Location /<someprefix> > | |
|
313 | ProxyPass http://127.0.0.1:5000/<someprefix> | |
|
314 | ProxyPassReverse http://127.0.0.1:5000/<someprefix> | |
|
316 | 315 | SetEnvIf X-Url-Scheme https HTTPS=1 |
|
317 | 316 | </Location> |
|
318 | 317 | |
@@ -327,6 +326,8 b' Add the following at the end of the .ini' | |||
|
327 | 326 | prefix = /<someprefix> |
|
328 | 327 | |
|
329 | 328 | |
|
329 | then change <someprefix> into your choosen prefix | |
|
330 | ||
|
330 | 331 | Apache's example FCGI config |
|
331 | 332 | ---------------------------- |
|
332 | 333 |
@@ -15,7 +15,8 b' This file can also be run as a script to' | |||
|
15 | 15 | """ |
|
16 | 16 | import sys |
|
17 | 17 | DEFAULT_VERSION = "0.6c9" |
|
18 |
DEFAULT_URL |
|
|
18 | DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" \ | |
|
19 | % sys.version[:3] | |
|
19 | 20 | |
|
20 | 21 | md5_data = { |
|
21 | 22 | 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca', |
@@ -54,25 +55,27 b' md5_data = {' | |||
|
54 | 55 | 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a', |
|
55 | 56 | } |
|
56 | 57 | |
|
57 |
import |
|
|
58 | try: from hashlib import md5 | |
|
59 | except ImportError: from md5 import md5 | |
|
58 | import os | |
|
59 | ||
|
60 | try: | |
|
61 | from hashlib import md5 | |
|
62 | except ImportError: | |
|
63 | from md5 import md5 | |
|
64 | ||
|
60 | 65 | |
|
61 | 66 | def _validate_md5(egg_name, data): |
|
62 | 67 | if egg_name in md5_data: |
|
63 | 68 | digest = md5(data).hexdigest() |
|
64 | 69 | if digest != md5_data[egg_name]: |
|
65 | print >>sys.stderr, ( | |
|
70 | print >> sys.stderr, ( | |
|
66 | 71 | "md5 validation of %s failed! (Possible download problem?)" |
|
67 | % egg_name | |
|
68 | ) | |
|
72 | % egg_name) | |
|
69 | 73 | sys.exit(2) |
|
70 | 74 | return data |
|
71 | 75 | |
|
72 | def use_setuptools( | |
|
73 |
|
|
|
74 | download_delay=15 | |
|
75 | ): | |
|
76 | ||
|
77 | def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, | |
|
78 | to_dir=os.curdir, download_delay=15): | |
|
76 | 79 | """Automatically find/download setuptools and make it available on sys.path |
|
77 | 80 | |
|
78 | 81 | `version` should be a valid setuptools version number that is available |
@@ -84,25 +87,29 b' def use_setuptools(' | |||
|
84 | 87 | this routine will print a message to ``sys.stderr`` and raise SystemExit in |
|
85 | 88 | an attempt to abort the calling script. |
|
86 | 89 | """ |
|
87 |
was_imported = 'pkg_resources' in sys.modules or 'setuptools' in |
|
|
90 | was_imported = 'pkg_resources' in sys.modules or ('setuptools' in | |
|
91 | sys.modules) | |
|
92 | ||
|
88 | 93 | def do_download(): |
|
89 |
egg = download_setuptools(version, download_base, to_dir, |
|
|
94 | egg = download_setuptools(version, download_base, to_dir, | |
|
95 | download_delay) | |
|
90 | 96 | sys.path.insert(0, egg) |
|
91 | import setuptools; setuptools.bootstrap_install_from = egg | |
|
97 | import setuptools | |
|
98 | setuptools.bootstrap_install_from = egg | |
|
92 | 99 | try: |
|
93 | 100 | import pkg_resources |
|
94 | 101 | except ImportError: |
|
95 |
return do_download() |
|
|
102 | return do_download() | |
|
96 | 103 | try: |
|
97 |
pkg_resources.require("setuptools>="+version) |
|
|
104 | pkg_resources.require("setuptools>=" + version) | |
|
105 | return | |
|
98 | 106 | except pkg_resources.VersionConflict, e: |
|
99 | 107 | if was_imported: |
|
100 | print >>sys.stderr, ( | |
|
108 | print >> sys.stderr, ( | |
|
101 | 109 | "The required version of setuptools (>=%s) is not available, and\n" |
|
102 | 110 | "can't be installed while this script is running. Please install\n" |
|
103 | 111 | " a more recent version first, using 'easy_install -U setuptools'." |
|
104 | "\n\n(Currently using %r)" | |
|
105 | ) % (version, e.args[0]) | |
|
112 | "\n\n(Currently using %r)") % (version, e.args[0]) | |
|
106 | 113 | sys.exit(2) |
|
107 | 114 | else: |
|
108 | 115 | del pkg_resources, sys.modules['pkg_resources'] # reload ok |
@@ -110,19 +117,20 b' def use_setuptools(' | |||
|
110 | 117 | except pkg_resources.DistributionNotFound: |
|
111 | 118 | return do_download() |
|
112 | 119 | |
|
113 | def download_setuptools( | |
|
114 |
|
|
|
115 | delay = 15 | |
|
116 | ): | |
|
120 | ||
|
121 | def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, | |
|
122 | to_dir=os.curdir, delay=15): | |
|
117 | 123 | """Download setuptools from a specified location and return its filename |
|
118 | 124 | |
|
119 | 125 | `version` should be a valid setuptools version number that is available |
|
120 | 126 | as an egg for download under the `download_base` URL (which should end |
|
121 | 127 | with a '/'). `to_dir` is the directory where the egg will be downloaded. |
|
122 |
`delay` is the number of seconds to pause before an actual download |
|
|
128 | `delay` is the number of seconds to pause before an actual download | |
|
129 | attempt. | |
|
123 | 130 | """ |
|
124 |
import urllib2 |
|
|
125 | egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3]) | |
|
131 | import urllib2 | |
|
132 | ||
|
133 | egg_name = "setuptools-%s-py%s.egg" % (version, sys.version[:3]) | |
|
126 | 134 | url = download_base + egg_name |
|
127 | 135 | saveto = os.path.join(to_dir, egg_name) |
|
128 | 136 | src = dst = None |
@@ -144,54 +152,24 b' I will start the download in %d seconds.' | |||
|
144 | 152 | |
|
145 | 153 | and place it in this directory before rerunning this script.) |
|
146 | 154 | ---------------------------------------------------------------------------""", |
|
147 | version, download_base, delay, url | |
|
148 |
|
|
|
155 | version, download_base, delay, url) | |
|
156 | from time import sleep | |
|
157 | sleep(delay) | |
|
149 | 158 | log.warn("Downloading %s", url) |
|
150 | 159 | src = urllib2.urlopen(url) |
|
151 | 160 | # Read/write all in one block, so we don't create a corrupt file |
|
152 | 161 | # if the download is interrupted. |
|
153 | 162 | data = _validate_md5(egg_name, src.read()) |
|
154 |
dst = open(saveto,"wb") |
|
|
163 | dst = open(saveto, "wb") | |
|
164 | dst.write(data) | |
|
155 | 165 | finally: |
|
156 |
if src: |
|
|
157 |
|
|
|
166 | if src: | |
|
167 | src.close() | |
|
168 | if dst: | |
|
169 | dst.close() | |
|
158 | 170 | return os.path.realpath(saveto) |
|
159 | 171 | |
|
160 | 172 | |
|
161 | ||
|
162 | ||
|
163 | ||
|
164 | ||
|
165 | ||
|
166 | ||
|
167 | ||
|
168 | ||
|
169 | ||
|
170 | ||
|
171 | ||
|
172 | ||
|
173 | ||
|
174 | ||
|
175 | ||
|
176 | ||
|
177 | ||
|
178 | ||
|
179 | ||
|
180 | ||
|
181 | ||
|
182 | ||
|
183 | ||
|
184 | ||
|
185 | ||
|
186 | ||
|
187 | ||
|
188 | ||
|
189 | ||
|
190 | ||
|
191 | ||
|
192 | ||
|
193 | ||
|
194 | ||
|
195 | 173 | def main(argv, version=DEFAULT_VERSION): |
|
196 | 174 | """Install or upgrade setuptools and EasyInstall""" |
|
197 | 175 | try: |
@@ -200,21 +178,21 b' def main(argv, version=DEFAULT_VERSION):' | |||
|
200 | 178 | egg = None |
|
201 | 179 | try: |
|
202 | 180 | egg = download_setuptools(version, delay=0) |
|
203 | sys.path.insert(0,egg) | |
|
181 | sys.path.insert(0, egg) | |
|
204 | 182 | from setuptools.command.easy_install import main |
|
205 | return main(list(argv)+[egg]) # we're done here | |
|
183 | return main(list(argv) + [egg]) # we're done here | |
|
206 | 184 | finally: |
|
207 | 185 | if egg and os.path.exists(egg): |
|
208 | 186 | os.unlink(egg) |
|
209 | 187 | else: |
|
210 | 188 | if setuptools.__version__ == '0.0.1': |
|
211 | print >>sys.stderr, ( | |
|
189 | print >> sys.stderr, ( | |
|
212 | 190 | "You have an obsolete version of setuptools installed. Please\n" |
|
213 |
"remove it from your system entirely before rerunning |
|
|
214 | ) | |
|
191 | "remove it from your system entirely before rerunning" | |
|
192 | " this script.") | |
|
215 | 193 | sys.exit(2) |
|
216 | 194 | |
|
217 | req = "setuptools>="+version | |
|
195 | req = "setuptools>=" + version | |
|
218 | 196 | import pkg_resources |
|
219 | 197 | try: |
|
220 | 198 | pkg_resources.require(req) |
@@ -223,16 +201,18 b' def main(argv, version=DEFAULT_VERSION):' | |||
|
223 | 201 | from setuptools.command.easy_install import main |
|
224 | 202 | except ImportError: |
|
225 | 203 | from easy_install import main |
|
226 | main(list(argv)+[download_setuptools(delay=0)]) | |
|
227 | sys.exit(0) # try to force an exit | |
|
204 | main(list(argv) + [download_setuptools(delay=0)]) | |
|
205 | sys.exit(0) # try to force an exit | |
|
228 | 206 | else: |
|
229 | 207 | if argv: |
|
230 | 208 | from setuptools.command.easy_install import main |
|
231 | 209 | main(argv) |
|
232 | 210 | else: |
|
233 |
print "Setuptools version",version,"or greater has |
|
|
211 | print "Setuptools version", version, ("or greater has " | |
|
212 | "been installed.") | |
|
234 | 213 | print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)' |
|
235 | 214 | |
|
215 | ||
|
236 | 216 | def update_md5(filenames): |
|
237 | 217 | """Update our built-in md5 registry""" |
|
238 | 218 | |
@@ -240,7 +220,7 b' def update_md5(filenames):' | |||
|
240 | 220 | |
|
241 | 221 | for name in filenames: |
|
242 | 222 | base = os.path.basename(name) |
|
243 | f = open(name,'rb') | |
|
223 | f = open(name, 'rb') | |
|
244 | 224 | md5_data[base] = md5(f.read()).hexdigest() |
|
245 | 225 | f.close() |
|
246 | 226 | |
@@ -250,27 +230,23 b' def update_md5(filenames):' | |||
|
250 | 230 | |
|
251 | 231 | import inspect |
|
252 | 232 | srcfile = inspect.getsourcefile(sys.modules[__name__]) |
|
253 |
f = open(srcfile, 'rb') |
|
|
233 | f = open(srcfile, 'rb') | |
|
234 | src = f.read() | |
|
235 | f.close() | |
|
254 | 236 | |
|
255 | 237 | match = re.search("\nmd5_data = {\n([^}]+)}", src) |
|
256 | 238 | if not match: |
|
257 | print >>sys.stderr, "Internal error!" | |
|
239 | print >> sys.stderr, "Internal error!" | |
|
258 | 240 | sys.exit(2) |
|
259 | 241 | |
|
260 | 242 | src = src[:match.start(1)] + repl + src[match.end(1):] |
|
261 | f = open(srcfile,'w') | |
|
243 | f = open(srcfile, 'w') | |
|
262 | 244 | f.write(src) |
|
263 | 245 | f.close() |
|
264 | 246 | |
|
265 | 247 | |
|
266 | if __name__=='__main__': | |
|
267 | if len(sys.argv)>2 and sys.argv[1]=='--md5update': | |
|
248 | if __name__ == '__main__': | |
|
249 | if len(sys.argv) > 2 and sys.argv[1] == '--md5update': | |
|
268 | 250 | update_md5(sys.argv[2:]) |
|
269 | 251 | else: |
|
270 | 252 | main(sys.argv[1:]) |
|
271 | ||
|
272 | ||
|
273 | ||
|
274 | ||
|
275 | ||
|
276 |
@@ -1,6 +1,6 b'' | |||
|
1 | 1 | ################################################################################ |
|
2 | 2 | ################################################################################ |
|
3 |
# |
|
|
3 | # RhodeCode - Pylons environment configuration # | |
|
4 | 4 | # # |
|
5 | 5 | # The %(here)s variable will be replaced with the parent directory of this file# |
|
6 | 6 | ################################################################################ |
@@ -10,7 +10,7 b' debug = true' | |||
|
10 | 10 | ################################################################################ |
|
11 | 11 | ## Uncomment and replace with the address which should receive ## |
|
12 | 12 | ## any error reports after application crash ## |
|
13 |
## Additionally those settings will be used by |
|
|
13 | ## Additionally those settings will be used by RhodeCode mailing system ## | |
|
14 | 14 | ################################################################################ |
|
15 | 15 | #email_to = admin@localhost |
|
16 | 16 | #error_email_from = paste_error@localhost |
@@ -78,8 +78,9 b' celery.always.eager = false' | |||
|
78 | 78 | #################################### |
|
79 | 79 | ### BEAKER CACHE #### |
|
80 | 80 | #################################### |
|
81 |
beaker.cache.data_dir= |
|
|
82 |
beaker.cache.lock_dir= |
|
|
81 | beaker.cache.data_dir=%(here)s/data/cache/data | |
|
82 | beaker.cache.lock_dir=%(here)s/data/cache/lock | |
|
83 | ||
|
83 | 84 | beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long |
|
84 | 85 | |
|
85 | 86 | beaker.cache.super_short_term.type=memory |
@@ -147,37 +148,49 b' sqlalchemy.convert_unicode = true' | |||
|
147 | 148 | ### LOGGING CONFIGURATION #### |
|
148 | 149 | ################################ |
|
149 | 150 | [loggers] |
|
150 | keys = root, routes, rhodecode, sqlalchemy | |
|
151 | keys = root, routes, rhodecode, sqlalchemy, beaker, templates | |
|
151 | 152 | |
|
152 | 153 | [handlers] |
|
153 | keys = console | |
|
154 | keys = console, console_sql | |
|
154 | 155 | |
|
155 | 156 | [formatters] |
|
156 | keys = generic,color_formatter | |
|
157 | keys = generic, color_formatter, color_formatter_sql | |
|
157 | 158 | |
|
158 | 159 | ############# |
|
159 | 160 | ## LOGGERS ## |
|
160 | 161 | ############# |
|
161 | 162 | [logger_root] |
|
162 |
level = |
|
|
163 | level = NOTSET | |
|
163 | 164 | handlers = console |
|
164 | 165 | |
|
165 | 166 | [logger_routes] |
|
166 |
level = |
|
|
167 |
handlers = |
|
|
167 | level = DEBUG | |
|
168 | handlers = | |
|
168 | 169 | qualname = routes.middleware |
|
169 | 170 | # "level = DEBUG" logs the route matched and routing variables. |
|
170 |
propagate = |
|
|
171 | propagate = 1 | |
|
172 | ||
|
173 | [logger_beaker] | |
|
174 | level = DEBUG | |
|
175 | handlers = | |
|
176 | qualname = beaker.container | |
|
177 | propagate = 1 | |
|
178 | ||
|
179 | [logger_templates] | |
|
180 | level = INFO | |
|
181 | handlers = | |
|
182 | qualname = pylons.templating | |
|
183 | propagate = 1 | |
|
171 | 184 | |
|
172 | 185 | [logger_rhodecode] |
|
173 | 186 | level = DEBUG |
|
174 |
handlers = |
|
|
187 | handlers = | |
|
175 | 188 | qualname = rhodecode |
|
176 |
propagate = |
|
|
189 | propagate = 1 | |
|
177 | 190 | |
|
178 | 191 | [logger_sqlalchemy] |
|
179 |
level = |
|
|
180 | handlers = console | |
|
192 | level = INFO | |
|
193 | handlers = console_sql | |
|
181 | 194 | qualname = sqlalchemy.engine |
|
182 | 195 | propagate = 0 |
|
183 | 196 | |
@@ -188,9 +201,15 b' propagate = 0' | |||
|
188 | 201 | [handler_console] |
|
189 | 202 | class = StreamHandler |
|
190 | 203 | args = (sys.stderr,) |
|
191 |
level = NO |
|
|
204 | level = INFO | |
|
192 | 205 | formatter = color_formatter |
|
193 | 206 | |
|
207 | [handler_console_sql] | |
|
208 | class = StreamHandler | |
|
209 | args = (sys.stderr,) | |
|
210 | level = WARN | |
|
211 | formatter = color_formatter_sql | |
|
212 | ||
|
194 | 213 | ################ |
|
195 | 214 | ## FORMATTERS ## |
|
196 | 215 | ################ |
@@ -202,4 +221,9 b' datefmt = %Y-%m-%d %H:%M:%S' | |||
|
202 | 221 | [formatter_color_formatter] |
|
203 | 222 | class=rhodecode.lib.colored_formatter.ColorFormatter |
|
204 | 223 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s |
|
224 | datefmt = %Y-%m-%d %H:%M:%S | |
|
225 | ||
|
226 | [formatter_color_formatter_sql] | |
|
227 | class=rhodecode.lib.colored_formatter.ColorFormatterSql | |
|
228 | format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s | |
|
205 | 229 | datefmt = %Y-%m-%d %H:%M:%S No newline at end of file |
@@ -2,6 +2,7 b' import sys' | |||
|
2 | 2 | from rhodecode import get_version |
|
3 | 3 | from rhodecode import __platform__ |
|
4 | 4 | from rhodecode import __license__ |
|
5 | from rhodecode import PLATFORM_OTHERS | |
|
5 | 6 | |
|
6 | 7 | py_version = sys.version_info |
|
7 | 8 | |
@@ -36,7 +37,7 b' if py_version < (2, 6):' | |||
|
36 | 37 | requirements.append("simplejson") |
|
37 | 38 | requirements.append("pysqlite") |
|
38 | 39 | |
|
39 | if __platform__ in ('Linux', 'Darwin'): | |
|
40 | if __platform__ in PLATFORM_OTHERS: | |
|
40 | 41 | requirements.append("py-bcrypt") |
|
41 | 42 | |
|
42 | 43 |
General Comments 0
You need to be logged in to leave comments.
Login now