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
- UnsafeNativeMethods.cs
- StickyNoteAnnotations.cs
- unitconverter.cs
- HiddenFieldPageStatePersister.cs
- MediaTimeline.cs
- DataBindingHandlerAttribute.cs
- DPTypeDescriptorContext.cs
- UnknownBitmapDecoder.cs
- TemplateBindingExtensionConverter.cs
- SupportsEventValidationAttribute.cs
- DispatcherOperation.cs
- OracleLob.cs
- ReturnEventArgs.cs
- PersonalizationStateInfoCollection.cs
- configsystem.cs
- PresentationTraceSources.cs
- ToggleButtonAutomationPeer.cs
- StaticSiteMapProvider.cs
- ProxyHwnd.cs
- Win32.cs
- DataGridColumnCollection.cs
- PrintPreviewDialog.cs
- httpstaticobjectscollection.cs
- RelOps.cs
- EFAssociationProvider.cs
- RadioButtonRenderer.cs
- MsmqIntegrationOutputChannel.cs
- DependencySource.cs
- RecipientInfo.cs
- DCSafeHandle.cs
- SqlDataSourceQueryEditorForm.cs
- RoutedCommand.cs
- OdbcParameter.cs
- PerformanceCountersElement.cs
- SpellerHighlightLayer.cs
- DurationConverter.cs
- WmfPlaceableFileHeader.cs
- DataGridViewCellCollection.cs
- ControlBuilderAttribute.cs
- CompilerScopeManager.cs
- XmlDataSource.cs
- SafeNativeMethodsMilCoreApi.cs
- ExpandSegmentCollection.cs
- UnmanagedMemoryStream.cs
- BuildResultCache.cs
- CheckableControlBaseAdapter.cs
- ModelPerspective.cs
- UnsafeNativeMethods.cs
- SchemaElementDecl.cs
- RuleSetDialog.Designer.cs
- ScriptReferenceBase.cs
- Stacktrace.cs
- FileClassifier.cs
- TaskFileService.cs
- EnumValAlphaComparer.cs
- DynamicDataRoute.cs
- ToolBarButton.cs
- WaitForChangedResult.cs
- PageCanvasSize.cs
- HostProtectionPermission.cs
- XmlSchemaRedefine.cs
- IssuedTokensHeader.cs
- BitmapEffectDrawing.cs
- DefaultPropertyAttribute.cs
- DesignerProperties.cs
- DataBinding.cs
- Choices.cs
- WrappedIUnknown.cs
- CultureSpecificStringDictionary.cs
- AlternateView.cs
- ModelTypeConverter.cs
- CrossContextChannel.cs
- SystemInfo.cs
- _SecureChannel.cs
- relpropertyhelper.cs
- ComplexPropertyEntry.cs
- GC.cs
- WindowsRegion.cs
- FormatStringEditor.cs
- Matrix.cs
- _UriTypeConverter.cs
- StringComparer.cs
- DoubleAnimationBase.cs
- IncrementalCompileAnalyzer.cs
- StringKeyFrameCollection.cs
- SchemaAttDef.cs
- UntrustedRecipientException.cs
- Page.cs
- DLinqDataModelProvider.cs
- ExpressionTable.cs
- MD5CryptoServiceProvider.cs
- DecimalAnimationBase.cs
- Stack.cs
- RelatedCurrencyManager.cs
- HttpCacheVary.cs
- QueryOutputWriterV1.cs
- XmlHelper.cs
- DataTableMapping.cs
- WebPartUtil.cs
- LogStore.cs