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
- HttpHandlerActionCollection.cs
- CryptoStream.cs
- RotateTransform.cs
- FixedSOMContainer.cs
- ThicknessAnimationBase.cs
- _CacheStreams.cs
- MissingSatelliteAssemblyException.cs
- SamlAction.cs
- WebPartCatalogAddVerb.cs
- TimeSpanSecondsConverter.cs
- BamlResourceContent.cs
- CryptoKeySecurity.cs
- FontFamily.cs
- ResourceProviderFactory.cs
- HtmlInputRadioButton.cs
- AutomationProperties.cs
- StaticResourceExtension.cs
- XmlStringTable.cs
- PropertyChangingEventArgs.cs
- PackageDigitalSignatureManager.cs
- WindowInteropHelper.cs
- XmlnsPrefixAttribute.cs
- FontSizeConverter.cs
- BufferBuilder.cs
- ObjectQueryState.cs
- ModuleBuilderData.cs
- SspiNegotiationTokenAuthenticator.cs
- WorkflowInlining.cs
- EventMappingSettingsCollection.cs
- ConfigXmlAttribute.cs
- DigitShape.cs
- CategoryNameCollection.cs
- SafeLocalAllocation.cs
- TraceContextRecord.cs
- ActivityTrace.cs
- shaper.cs
- SortedSetDebugView.cs
- SplitterCancelEvent.cs
- WebReferencesBuildProvider.cs
- DbConnectionInternal.cs
- ToolTipAutomationPeer.cs
- Stroke2.cs
- IntAverageAggregationOperator.cs
- RawStylusSystemGestureInputReport.cs
- AttributeCollection.cs
- ReverseQueryOperator.cs
- ResXDataNode.cs
- FileDialog_Vista_Interop.cs
- SystemSounds.cs
- CustomTypeDescriptor.cs
- PrinterSettings.cs
- StdRegProviderWrapper.cs
- TypeBuilder.cs
- FieldInfo.cs
- EnumerableRowCollection.cs
- DataTrigger.cs
- DataChangedEventManager.cs
- Peer.cs
- RuntimeHandles.cs
- DataMemberConverter.cs
- CharEnumerator.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- BindingListCollectionView.cs
- ISSmlParser.cs
- Point4D.cs
- TextLineResult.cs
- GlyphElement.cs
- ShellProvider.cs
- EntityDesignPluralizationHandler.cs
- DSASignatureFormatter.cs
- CapabilitiesSection.cs
- TransformPattern.cs
- MenuItemCollection.cs
- HMAC.cs
- CodeGen.cs
- Random.cs
- EdmType.cs
- HostnameComparisonMode.cs
- DateTimeFormat.cs
- Page.cs
- IPHostEntry.cs
- NullReferenceException.cs
- ReadOnlyHierarchicalDataSourceView.cs
- SqlCacheDependencyDatabaseCollection.cs
- DesignerResources.cs
- DynamicVirtualDiscoSearcher.cs
- EUCJPEncoding.cs
- ScaleTransform.cs
- CfgParser.cs
- OptimizedTemplateContent.cs
- SimpleTextLine.cs
- MultiPageTextView.cs
- FileLevelControlBuilderAttribute.cs
- CodeIdentifiers.cs
- SqlDataSourceEnumerator.cs
- CommandHelpers.cs
- UserPersonalizationStateInfo.cs
- safelink.cs
- ProfileModule.cs
- MultiByteCodec.cs