add logging to a file as basis for recording read access
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2962 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									1cd31af11b
								
							
						
					
					
						commit
						a02c8f9983
					
				
					 3 changed files with 92 additions and 0 deletions
				
			
		|  | @ -140,3 +140,27 @@ Tracking Views | ||||||
| 
 | 
 | ||||||
|   >>> from cybertools.tracking.browser import TrackingStorageView |   >>> from cybertools.tracking.browser import TrackingStorageView | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | Track Read Access via a Log File | ||||||
|  | ================================ | ||||||
|  | 
 | ||||||
|  |   >>> import os | ||||||
|  |   >>> from cybertools.tracking.tests import testDir | ||||||
|  |   >>> from cybertools.tracking.logfile import Logger | ||||||
|  | 
 | ||||||
|  |   >>> logfile = os.path.join(testDir, 'test.log') | ||||||
|  |   >>> logger = Logger('test', logfile) | ||||||
|  | 
 | ||||||
|  |   >>> logger.log('Test message #1') | ||||||
|  |   >>> logger.log('Test message #2') | ||||||
|  | 
 | ||||||
|  |   >>> logger.doRollover() | ||||||
|  |   >>> logger.log('Test message #3') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Fin de partie | ||||||
|  | ============= | ||||||
|  | 
 | ||||||
|  |   >>> for fn in os.listdir(testDir): | ||||||
|  |   ...     if '.log' in fn: | ||||||
|  |   ...         os.unlink(os.path.join(testDir, fn)) | ||||||
|  |  | ||||||
							
								
								
									
										64
									
								
								tracking/logfile.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								tracking/logfile.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,64 @@ | ||||||
|  | # | ||||||
|  | #  Copyright (c) 2008 Helmut Merz helmutm@cy55.de | ||||||
|  | # | ||||||
|  | #  This program is free software; you can redistribute it and/or modify | ||||||
|  | #  it under the terms of the GNU General Public License as published by | ||||||
|  | #  the Free Software Foundation; either version 2 of the License, or | ||||||
|  | #  (at your option) any later version. | ||||||
|  | # | ||||||
|  | #  This program is distributed in the hope that it will be useful, | ||||||
|  | #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | #  GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | #  You should have received a copy of the GNU General Public License | ||||||
|  | #  along with this program; if not, write to the Free Software | ||||||
|  | #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | """ | ||||||
|  | Track user interactions by writing to a log file, loading the log at | ||||||
|  | certain times collecting analysis results in a real tracking storage. | ||||||
|  | 
 | ||||||
|  | $Id$ | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | import logging | ||||||
|  | import os | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Logger(object): | ||||||
|  | 
 | ||||||
|  |     handler = None | ||||||
|  | 
 | ||||||
|  |     def __init__(self, logname, logfile, logformat='%(asctime)s;%(message)s', | ||||||
|  |                  **kw): | ||||||
|  |         self.logname = logname | ||||||
|  |         self.logfile = logfile | ||||||
|  |         self.logformat = logformat | ||||||
|  |         self.params = kw | ||||||
|  |         self.setup() | ||||||
|  | 
 | ||||||
|  |     def setup(self): | ||||||
|  |         directory = os.path.dirname(self.logfile) | ||||||
|  |         if not os.path.exists(directory): | ||||||
|  |             os.makedirs(directory) | ||||||
|  |         logger = logging.getLogger(self.logname) | ||||||
|  |         self.handler = logging.handlers.RotatingFileHandler(self.logfile, | ||||||
|  |                             backupCount=self.params.get('backupCount', 5), | ||||||
|  |                             encoding='UTF-8') | ||||||
|  |         formatter = logging.Formatter(self.logformat) | ||||||
|  |         self.handler.setFormatter(formatter) | ||||||
|  |         if not logger.handlers: | ||||||
|  |             logger.addHandler(self.handler) | ||||||
|  |         logger.setLevel(logging.INFO) | ||||||
|  | 
 | ||||||
|  |     def log(self, message): | ||||||
|  |         logging.getLogger(self.logname).info(message) | ||||||
|  | 
 | ||||||
|  |     def doRollover(self): | ||||||
|  |         if self.handler is not None: | ||||||
|  |             self.handler.doRollover() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | loggers = {} | ||||||
|  | @ -1,9 +1,13 @@ | ||||||
| # $Id$ | # $Id$ | ||||||
| 
 | 
 | ||||||
| import unittest, doctest | import unittest, doctest | ||||||
|  | import os | ||||||
| from zope.testing.doctestunit import DocFileSuite | from zope.testing.doctestunit import DocFileSuite | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | testDir = os.path.join(os.path.dirname(__file__), 'testdata') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class Test(unittest.TestCase): | class Test(unittest.TestCase): | ||||||
|     "Basic tests for the loops.track package." |     "Basic tests for the loops.track package." | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm