]> git.saurik.com Git - apple/mdnsresponder.git/blob - Clients/PrinterSetupWizard/Logger.cpp
c5ffabf9cec53cda330b6baa85671e604a860a07
[apple/mdnsresponder.git] / Clients / PrinterSetupWizard / Logger.cpp
1 /* -*- Mode: C; tab-width: 4 -*-
2 *
3 * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16
17 Change History (most recent first):
18
19 $Log: Logger.cpp,v $
20 Revision 1.3 2009/06/11 23:32:12 herscher
21 <rdar://problem/4458913> Follow the app data folder naming convention of Safari/iTunes on Windows
22
23 Revision 1.2 2009/06/11 23:11:53 herscher
24 <rdar://problem/4458913> Log to user's app data folder
25
26 Revision 1.1 2009/06/11 22:27:14 herscher
27 <rdar://problem/4458913> Add comprehensive logging during printer installation process.
28
29 */
30
31 #include "stdafx.h"
32 #include "Logger.h"
33 #include "DebugServices.h"
34 #include <string>
35
36
37 Logger::Logger()
38 {
39 std::string tmp;
40 char path[ MAX_PATH ];
41 HRESULT err;
42 BOOL ok;
43
44 err = SHGetFolderPathA( NULL, CSIDL_LOCAL_APPDATA, NULL, 0, path );
45 require_noerr( err, exit );
46
47 tmp = path;
48
49 // Create Logs subdir
50 tmp += "\\Apple";
51 ok = CreateDirectoryA( tmp.c_str(), NULL );
52 require_action( ( ok || ( GetLastError() == ERROR_ALREADY_EXISTS ) ), exit, err = -1 );
53
54 // Create Logs subdir
55 tmp += "\\Bonjour";
56 ok = CreateDirectoryA( tmp.c_str(), NULL );
57 require_action( ( ok || ( GetLastError() == ERROR_ALREADY_EXISTS ) ), exit, err = -1 );
58
59 // Create log file
60 tmp += "\\PrinterSetupLog.txt";
61 open( tmp.c_str());
62
63 *this << currentTime() << " Log started" << std::endl;
64
65 exit:
66
67 return;
68 }
69
70
71 Logger::~Logger()
72 {
73 *this << currentTime() << " Log finished" << std::endl;
74 flush();
75 }
76
77
78 std::string
79 Logger::currentTime()
80 {
81 time_t ltime;
82 struct tm now;
83 int err;
84 std::string ret;
85
86 time( &ltime );
87 err = localtime_s( &now, &ltime );
88
89 if ( !err )
90 {
91 char temp[ 64 ];
92
93 strftime( temp, sizeof( temp ), "%m/%d/%y %I:%M:%S %p", &now );
94 ret = temp;
95 }
96
97 return ret;
98 }