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
- __ComObject.cs
- DelegateTypeInfo.cs
- XmlSchemaSimpleContentRestriction.cs
- BuildDependencySet.cs
- TreeNodeCollection.cs
- FixedFlowMap.cs
- TdsParserStaticMethods.cs
- SoundPlayer.cs
- DataGridParentRows.cs
- MatrixIndependentAnimationStorage.cs
- SqlBulkCopy.cs
- VoiceObjectToken.cs
- ChineseLunisolarCalendar.cs
- WebServiceHostFactory.cs
- IProvider.cs
- NativeCppClassAttribute.cs
- SymbolDocumentInfo.cs
- ClientSettingsSection.cs
- XmlSchemaExporter.cs
- ReflectionPermission.cs
- FrameworkElementFactory.cs
- Bitmap.cs
- WebControl.cs
- Point3D.cs
- COM2ColorConverter.cs
- DataSysAttribute.cs
- SupportsEventValidationAttribute.cs
- KeyMatchBuilder.cs
- SamlDelegatingWriter.cs
- AnimationStorage.cs
- HttpCachePolicyWrapper.cs
- _HeaderInfo.cs
- ServiceParser.cs
- CodeArrayIndexerExpression.cs
- ListControl.cs
- ListBoxItemWrapperAutomationPeer.cs
- WindowsSecurityTokenAuthenticator.cs
- ResourceReferenceExpression.cs
- Delegate.cs
- StylusPointPropertyUnit.cs
- XXXInfos.cs
- SqlFactory.cs
- FieldAccessException.cs
- TypeDefinition.cs
- ObjectDataSourceStatusEventArgs.cs
- Point4D.cs
- ClientSideProviderDescription.cs
- ReadOnlyDataSourceView.cs
- Help.cs
- SqlConnectionStringBuilder.cs
- ProtocolsConfigurationEntry.cs
- XslTransform.cs
- WeakHashtable.cs
- DSASignatureDeformatter.cs
- WebPartEditorOkVerb.cs
- ScrollViewer.cs
- MessageFormatterConverter.cs
- CoreChannel.cs
- PeerNameRecordCollection.cs
- PeerTransportElement.cs
- CatalogPart.cs
- GeometryGroup.cs
- _SafeNetHandles.cs
- SqlConnectionHelper.cs
- Variable.cs
- DoubleAnimationBase.cs
- DataTableMapping.cs
- CookieProtection.cs
- Trace.cs
- UserNamePasswordValidationMode.cs
- SafeRightsManagementPubHandle.cs
- OdbcConnectionHandle.cs
- AlternationConverter.cs
- ListSortDescriptionCollection.cs
- ItemCheckedEvent.cs
- DBCSCodePageEncoding.cs
- ChangesetResponse.cs
- DrawingContextWalker.cs
- MetadataArtifactLoaderResource.cs
- ValidationResult.cs
- CapabilitiesState.cs
- SoapHeaderException.cs
- TextElementEnumerator.cs
- XmlILTrace.cs
- Light.cs
- EntityDataSourceDesigner.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- TextBounds.cs
- UserMapPath.cs
- PageParser.cs
- DataGridRowsPresenter.cs
- GridViewRow.cs
- TypeLoadException.cs
- BuildProvidersCompiler.cs
- HttpHandlersInstallComponent.cs
- DoubleConverter.cs
- SplayTreeNode.cs
- TabPanel.cs
- FacetValues.cs
- WindowsNonControl.cs