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
- LinkConverter.cs
- ScriptReferenceEventArgs.cs
- FormViewPagerRow.cs
- RecognizedWordUnit.cs
- wgx_sdk_version.cs
- Reference.cs
- PrintEvent.cs
- RemotingServices.cs
- BrowserCapabilitiesCompiler.cs
- XmlComment.cs
- DependencyObjectValidator.cs
- SQLStringStorage.cs
- RevocationPoint.cs
- OracleEncoding.cs
- ValidationErrorCollection.cs
- WmfPlaceableFileHeader.cs
- GridItemCollection.cs
- CommandManager.cs
- CacheOutputQuery.cs
- HttpRequestCacheValidator.cs
- ClientUtils.cs
- Verify.cs
- HandlerFactoryCache.cs
- StylusButton.cs
- BinaryNegotiation.cs
- FolderBrowserDialog.cs
- QualificationDataAttribute.cs
- MobileCategoryAttribute.cs
- JsonDataContract.cs
- ImageBrush.cs
- Vector.cs
- DataGridHeaderBorder.cs
- RadioButtonDesigner.cs
- State.cs
- X509SecurityTokenProvider.cs
- NegationPusher.cs
- x509utils.cs
- RegistryDataKey.cs
- StsCommunicationException.cs
- XmlElementAttribute.cs
- Event.cs
- ActivityExecutionWorkItem.cs
- UserControlParser.cs
- LOSFormatter.cs
- CompositionAdorner.cs
- FontDialog.cs
- SimpleRecyclingCache.cs
- AvTraceDetails.cs
- GeneratedView.cs
- RecognizeCompletedEventArgs.cs
- ContentFileHelper.cs
- DrawingGroup.cs
- UnknownWrapper.cs
- StatusBarDrawItemEvent.cs
- SqlDataSourceQueryEditor.cs
- ToolStripSeparator.cs
- RequiredAttributeAttribute.cs
- VariableExpressionConverter.cs
- LineGeometry.cs
- DesignTimeVisibleAttribute.cs
- PassportPrincipal.cs
- DesignerDataRelationship.cs
- MouseActionConverter.cs
- ResXResourceWriter.cs
- Processor.cs
- WSMessageEncoding.cs
- Nullable.cs
- SwitchLevelAttribute.cs
- HttpCookiesSection.cs
- GroupBox.cs
- ByteConverter.cs
- DoubleIndependentAnimationStorage.cs
- GridEntry.cs
- ErrorsHelper.cs
- Invariant.cs
- UdpDiscoveryEndpoint.cs
- Globals.cs
- Int32Storage.cs
- ReadOnlyHierarchicalDataSource.cs
- RawAppCommandInputReport.cs
- _TimerThread.cs
- PropertyGridDesigner.cs
- FormViewActionList.cs
- ParentUndoUnit.cs
- DefaultBindingPropertyAttribute.cs
- AutomationElementIdentifiers.cs
- XmlSchemaSubstitutionGroup.cs
- BufferModeSettings.cs
- StringCollectionEditor.cs
- SubstitutionDesigner.cs
- LineProperties.cs
- peersecuritysettings.cs
- HostnameComparisonMode.cs
- SelectionBorderGlyph.cs
- Select.cs
- VirtualPathProvider.cs
- Function.cs
- SponsorHelper.cs
- _Events.cs
- PartBasedPackageProperties.cs