Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / MsiStyleLogWriter.cs / 1 / MsiStyleLogWriter.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Install { using System.Diagnostics; using System.Globalization; using System.IO; class MsiStyleLogWriter { string logEntryPrefix; bool logFailureReported; StreamWriter logWriter; MsiStyleLogWriter(string logEntryPrefix) { this.logEntryPrefix = logEntryPrefix; string tempPath = Path.GetTempPath(); Random random = new Random(); int attempts = 0; const int maxAttempts = 20; Exception lastException = null; do { string logFileName = string.Format(CultureInfo.InvariantCulture, "dd_wcf_retCA{0:X}.txt", random.Next(short.MaxValue)); string logFilePath = Path.Combine(tempPath, logFileName); try { Stream logFileStream = new FileStream(logFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.Read); this.logWriter = new StreamWriter(logFileStream); } catch (DirectoryNotFoundException exception) { EventLogger.LogWarning(SR.GetString(SR.ErrorCreatingMsiStyleLogFile, logFilePath, exception), false); return; } catch (PathTooLongException exception) { EventLogger.LogWarning(SR.GetString(SR.ErrorCreatingMsiStyleLogFile, logFilePath, exception), false); return; } catch (IOException exception) { // The current logFilePath may already exists; try again. lastException = exception; } } while ((this.logWriter == null) && (++attempts < maxAttempts)); if (this.logWriter == null) { EventLogger.LogWarning(SR.GetString(SR.ErrorCreatingMsiStyleLogFile, tempPath, lastException), false); this.logWriter = StreamWriter.Null; } } public static MsiStyleLogWriter CreateWriter() { string mainModuleFilePath = Process.GetCurrentProcess().MainModule.FileName; string logEntryPrefix = Path.GetFileNameWithoutExtension(mainModuleFilePath); MsiStyleLogWriter writer = new MsiStyleLogWriter(logEntryPrefix); DateTime now = DateTime.Now; writer.WriteRaw(SR.GetString(SR.MsiStyleLogBanner, now.ToShortDateString(), now.ToString("HH:mm:ss", CultureInfo.CurrentCulture), mainModuleFilePath)); return writer; } public void WriteEntry(string message) { this.WriteRaw(string.Format(CultureInfo.InvariantCulture, "{0} [{1}]: {2}", this.logEntryPrefix, DateTime.Now.ToString("HH:mm:ss:fff", CultureInfo.CurrentCulture), message)); } public void WriteRaw(string message) { try { this.logWriter.WriteLine(message); this.logWriter.Flush(); } catch (IOException exception) { if (!this.logFailureReported) { EventLogger.WriteLogEntry(SR.GetString(SR.ErrorWritingMsiStyleLogEntry, exception), EventLogEntryType.Warning); this.logFailureReported = true; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReadOnlyTernaryTree.cs
- COAUTHINFO.cs
- AccessControlEntry.cs
- SqlAggregateChecker.cs
- UnSafeCharBuffer.cs
- AbstractExpressions.cs
- XmlEntity.cs
- ClientCredentials.cs
- WebPartCatalogAddVerb.cs
- ByteStream.cs
- XamlGridLengthSerializer.cs
- listitem.cs
- CellPartitioner.cs
- EntityKey.cs
- CheckBox.cs
- MultiPageTextView.cs
- TransportBindingElement.cs
- DateTimeConverter.cs
- RecordConverter.cs
- Transform3DGroup.cs
- TagElement.cs
- CodeCatchClauseCollection.cs
- XmlTextReaderImplHelpers.cs
- ResXResourceReader.cs
- OutputScopeManager.cs
- _AutoWebProxyScriptEngine.cs
- XmlSchemaChoice.cs
- TimerElapsedEvenArgs.cs
- MimeMultiPart.cs
- InvokeMemberBinder.cs
- TemplateField.cs
- SourceElementsCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- IOException.cs
- ISSmlParser.cs
- Comparer.cs
- ToolBar.cs
- PropertyConverter.cs
- ApplicationGesture.cs
- ResXBuildProvider.cs
- GraphicsState.cs
- HiddenField.cs
- DataGridViewCell.cs
- QilBinary.cs
- assemblycache.cs
- UnsafeNativeMethods.cs
- SByteConverter.cs
- SectionInformation.cs
- NavigationHelper.cs
- OdbcException.cs
- RuleSetCollection.cs
- DataObjectMethodAttribute.cs
- ByteStorage.cs
- MergeFailedEvent.cs
- DataServiceResponse.cs
- VBIdentifierDesigner.xaml.cs
- PatternMatcher.cs
- XsltLibrary.cs
- embossbitmapeffect.cs
- GlobalItem.cs
- HeaderedItemsControl.cs
- WSDualHttpSecurity.cs
- FormClosingEvent.cs
- PropertyPathConverter.cs
- SettingsProperty.cs
- PageParserFilter.cs
- MessageContractAttribute.cs
- BitmapMetadata.cs
- AssemblyNameUtility.cs
- ServiceObjectContainer.cs
- ApplicationTrust.cs
- UIntPtr.cs
- CompositeActivityCodeGenerator.cs
- TabItemAutomationPeer.cs
- BindingValueChangedEventArgs.cs
- QualifiedCellIdBoolean.cs
- SequenceDesigner.cs
- HitTestDrawingContextWalker.cs
- TargetConverter.cs
- TreeViewImageKeyConverter.cs
- CanonicalFormWriter.cs
- QilInvokeLateBound.cs
- OdbcParameterCollection.cs
- WebPart.cs
- BufferedReceiveManager.cs
- StatusCommandUI.cs
- ValidatedControlConverter.cs
- RankException.cs
- OracleFactory.cs
- DateTimeValueSerializer.cs
- EntityType.cs
- TextServicesCompartment.cs
- XPathNodePointer.cs
- WebPartCatalogAddVerb.cs
- DataTableNewRowEvent.cs
- XmlNodeChangedEventManager.cs
- QueryMatcher.cs
- CompositeFontParser.cs
- LoginStatusDesigner.cs
- WebPartConnectionsDisconnectVerb.cs