/// <summary>
        /// Adds a log writer and binds to a specific log message type
        /// </summary>
        /// <param name="logMessageType">Type of log message</param>
        /// <param name="logWriter">Log writer to add</param>
        public void AddLogWriter(NiawaLogType logMessageType, ILogWriter logWriter)
        {
            //Ensure that more than one instance of a ILogWriter implementation (of a specific type) is not added.
            if(_logWriters.ContainsKey(logWriter.GetType().ToString()))
                if (_logWriters[logWriter.GetType().ToString()].LogWriterID != logWriter.LogWriterID)
                    throw new Exception("Cannot add two instances of the same ILogWriter type [" + logWriter.GetType().ToString() + "].  Add a different type of ILogWriter, or add an existing instance of this ILogWriter type.");

             //Check for duplicate entry attempts into the LogMessageTypeLogWriters collection
            if (_logMessageTypeLogWriters.ContainsKey(logMessageType))
                if (_logMessageTypeLogWriters[logMessageType].Contains(logWriter))
                    throw new Exception("Cannot add the same ILogWriter [" + logWriter.GetType().ToString() + "] for LogMessageType [" + Enum.GetName(logMessageType.GetType(), logMessageType) + "] more than once.");

            //add log writer to list
            if (!(_logWriters.ContainsKey(logWriter.GetType().ToString())))
                _logWriters.Add(logWriter.GetType().ToString(), logWriter);

            //add log writer to map
            List<ILogWriter> mapLogWriters = null;

            //check if log message type already in map
            if (_logMessageTypeLogWriters.ContainsKey(logMessageType))
                mapLogWriters = _logMessageTypeLogWriters[logMessageType];
            else
            {
                //create new entry of log writers for log message type and add to map
                mapLogWriters = new List<ILogWriter>();
                _logMessageTypeLogWriters.Add(logMessageType, mapLogWriters);
            }

            //add log writer to list of log writers mapped to log message type
            mapLogWriters.Add(logWriter);
        }
Пример #2
0
        /// <summary>
		/// Initializes a new instance of the <see cref="HttpClientContext"/> class.
        /// </summary>
        /// <param name="secured">true if the connection is secured (SSL/TLS)</param>
        /// <param name="remoteEndPoint">client that connected.</param>
        /// <param name="stream">Stream used for communication</param>
        /// <param name="parserFactory">Used to create a <see cref="IHttpRequestParser"/>.</param>
        /// <param name="bufferSize">Size of buffer to use when reading data. Must be at least 4096 bytes.</param>
        /// <exception cref="SocketException">If <see cref="Socket.BeginReceive(byte[],int,int,SocketFlags,AsyncCallback,object)"/> fails</exception>
        /// <exception cref="ArgumentException">Stream must be writable and readable.</exception>
        public HttpClientContext(bool secured, IPEndPoint remoteEndPoint,
                                    Stream stream, IRequestParserFactory parserFactory, int bufferSize, Socket sock, ILogWriter log)
        {
            Check.Require(remoteEndPoint, "remoteEndPoint");
            Check.NotEmpty(remoteEndPoint.Address.ToString(), "remoteEndPoint.Address");
            Check.Require(stream, "stream");
            Check.Require(parserFactory, "parser");
            Check.Min(4096, bufferSize, "bufferSize");
            Check.Require(sock, "socket");

            if (!stream.CanWrite || !stream.CanRead)
                throw new ArgumentException("Stream must be writable and readable.");

            _bufferSize = bufferSize;
			RemoteAddress = remoteEndPoint.Address.ToString();
			RemotePort = remoteEndPoint.Port.ToString();
            _log = log;
            _parser = parserFactory.CreateParser(_log);
            _parser.RequestCompleted += OnRequestCompleted;
            _parser.RequestLineReceived += OnRequestLine;
            _parser.HeaderReceived += OnHeaderReceived;
            _parser.BodyBytesReceived += OnBodyBytesReceived;
            _currentRequest = new HttpRequest();

            IsSecured = secured;
            if (stream == null)
                throw new NullReferenceException ("Null Stream in HttpClientContext");
            _stream = stream;
           
            _buffer = new byte[bufferSize];

        }
        public DatabaseFactory(IConnectionString connectionString, ILogWriter logWriter)
        {
            Checks.Argument.IsNotNull(connectionString, "connectionString");

            _connectionString = connectionString.Value;
            _logWriter = logWriter;
        }
Пример #4
0
		public MSBuildResult[] RunTarget (string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter,
			MSBuildVerbosity verbosity)
		{
			MSBuildResult[] result = null;
			BuildEngine.RunSTA (delegate
			{
				try {
					var project = SetupProject (configurations);
					currentLogWriter = logWriter;

					LocalLogger logger = new LocalLogger (Path.GetDirectoryName (file));
					engine.UnregisterAllLoggers ();
					engine.RegisterLogger (logger);
					engine.RegisterLogger (consoleLogger);

					consoleLogger.Verbosity = GetVerbosity (verbosity);
					
					project.Build (target);
					
					result = logger.BuildResult.ToArray ();
		//		} catch (InvalidProjectFileException ex) {
		//			result = new MSBuildResult[] { new MSBuildResult (false, ex.ProjectFile ?? file, ex.LineNumber, ex.ColumnNumber, ex.ErrorCode, ex.Message) };
				} finally {
					currentLogWriter = null;
				}
			});
			return result;
		}
Пример #5
0
        /// <summary>
		/// Initializes a new instance of the <see cref="HttpClientContext"/> class.
        /// </summary>
        /// <param name="secured">true if the connection is secured (SSL/TLS)</param>
        /// <param name="remoteEndPoint">client that connected.</param>
        /// <param name="stream">Stream used for communication</param>
        /// <param name="clientCertificate">Client security certificate</param>
        /// <param name="parserFactory">Used to create a <see cref="IHttpRequestParser"/>.</param>
        /// <param name="bufferSize">Size of buffer to use when reading data. Must be at least 4096 bytes.</param>
        /// <param name="socket">Client socket</param>
        /// <exception cref="SocketException">If <see cref="Socket.BeginReceive(byte[],int,int,SocketFlags,AsyncCallback,object)"/> fails</exception>
        /// <exception cref="ArgumentException">Stream must be writable and readable.</exception>
        public HttpClientContext(bool secured, IPEndPoint remoteEndPoint, Stream stream, 
            ClientCertificate clientCertificate, IRequestParserFactory parserFactory, int bufferSize, Socket socket)
        {
            Check.Require(remoteEndPoint, "remoteEndPoint");
            Check.NotEmpty(remoteEndPoint.Address.ToString(), "remoteEndPoint.Address");
            Check.Require(stream, "stream");
            Check.Require(parserFactory, "parser");
            Check.Min(4096, bufferSize, "bufferSize");
            Check.Require(socket, "socket");

            if (!stream.CanWrite || !stream.CanRead)
                throw new ArgumentException("Stream must be writable and readable.");

            _bufferSize = bufferSize;
			RemoteAddress = remoteEndPoint.Address.ToString();
			RemotePort = remoteEndPoint.Port.ToString();
            _log = NullLogWriter.Instance;
            _parser = parserFactory.CreateParser(_log);
            _parser.RequestCompleted += OnRequestCompleted;
            _parser.RequestLineReceived += OnRequestLine;
            _parser.HeaderReceived += OnHeaderReceived;
            _parser.BodyBytesReceived += OnBodyBytesReceived;
        	_localEndPoint = (IPEndPoint)socket.LocalEndPoint;

            HttpRequest request = new HttpRequest();
            request._remoteEndPoint = remoteEndPoint;
            request.Secure = secured;
            _currentRequest = request;

            IsSecured = secured;
            _stream = stream;
            _clientCertificate = clientCertificate;
            _buffer = new byte[bufferSize];

        }
Пример #6
0
 public AutomaticMigration(IAccessDb db, IManageMigrations migrations, ILogWriter logger)
 {
     _db = db;
     _migrations = migrations;
     _runner=new MigrationTaskRunner(db,logger);
     UpdateSelf();
 }
Пример #7
0
 public DefaultRackServer(int port,IPAddress ipAddress,ILogWriter logWriter)
 {
     _server = new HttpServer.HttpServer(logWriter);
     _ipAddress = ipAddress;
     _port = port;
     _logWriter = logWriter;
 }
Пример #8
0
		public void Attach(ILogWriter newLogWriter)
		{
			if (newLogWriter == null)
				throw new ArgumentNullException("newLogWriter");
			if (newLogWriter == this.WrappedLogWriter)
				return;

			ILogWriter prevLogWriter = this.WrappedLogWriter;
			Exception detachException = null;
			if (this.WrappedLogWriter != null)
			{
				try
				{
					prevLogWriter.Detach();
				}
				catch (Exception ex)
				{
					detachException = ex;
				}

				this.WrappedLogWriter.ServerWriteLine(
					string.Format("Log writer \"{0}\" is being detached.", this.LogWriterName), TraceLevel.Verbose);
			}

			this.WrappedLogWriter = newLogWriter;

			this.WrappedLogWriter.ServerWriteLine(
				string.Format("Log writer \"{0}\" has been attached.", this.LogWriterName), TraceLevel.Verbose);

			if (detachException != null)
				this.ServerWriteLine(
					string.Format("Log writer \"{0}\" had thrown an unexpected exception:\n{1}", prevLogWriter.Name, detachException), 
					TraceLevel.Error);
		}
Пример #9
0
		public MSBuildResult[] RunTarget (string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter,
			MSBuildVerbosity verbosity)
		{
			MSBuildResult[] result = null;
			BuildEngine.RunSTA (delegate
			{
				try {
					var project = SetupProject (configurations);
					currentLogWriter = logWriter;

					var logger = new LocalLogger (file);
					buildEngine.Engine.UnregisterAllLoggers ();
					buildEngine.Engine.RegisterLogger (logger);
					buildEngine.Engine.RegisterLogger (consoleLogger);

					consoleLogger.Verbosity = GetVerbosity (verbosity);

					// We are using this BuildProject overload and the BuildSettings.None argument as a workaround to
					// an xbuild bug which causes references to not be resolved after the project has been built once.
					buildEngine.Engine.BuildProject (project, new [] { target }, new Hashtable (), BuildSettings.None);
					
					result = logger.BuildResult.ToArray ();
				} catch (InvalidProjectFileException ex) {
					var r = new MSBuildResult (
						file, false, ex.ErrorSubcategory, ex.ErrorCode, ex.ProjectFile,
						ex.LineNumber, ex.ColumnNumber, ex.EndLineNumber, ex.EndColumnNumber,
						ex.BaseMessage, ex.HelpKeyword);
					logWriter.WriteLine (r.ToString ());
					result = new [] { r };
				} finally {
					currentLogWriter = null;
				}
			});
			return result;
		}
Пример #10
0
		public MSBuildResult[] RunTarget (string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter,
			MSBuildVerbosity verbosity)
		{
			MSBuildResult[] result = null;
			BuildEngine.RunSTA (delegate
			{
				try {
					var project = SetupProject (configurations);
					currentLogWriter = logWriter;

					var logger = new LocalLogger (file);
					engine.UnregisterAllLoggers ();
					engine.RegisterLogger (logger);
					engine.RegisterLogger (consoleLogger);

					consoleLogger.Verbosity = GetVerbosity (verbosity);
					
					project.Build (target);
					
					result = logger.BuildResult.ToArray ();
				} catch (Microsoft.Build.Exceptions.InvalidProjectFileException ex) {
						var r = new MSBuildResult (
							file, false, ex.ErrorSubcategory, ex.ErrorCode, ex.ProjectFile,
							ex.LineNumber, ex.ColumnNumber, ex.EndLineNumber, ex.EndColumnNumber,
							ex.BaseMessage, ex.HelpKeyword);
						logWriter.WriteLine (r.ToString ());
						result = new [] { r };
				} finally {
					currentLogWriter = null;
				}
			});
			return result;
		}
Пример #11
0
 public void RegisterLogWriter(ILogWriter logWriter)
 {
     lock (SyncroObject)
     {
         LogWriters.Add(logWriter);
     }
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="HttpClientContextImp"/> class.
        /// </summary>
        /// <param name="secured">true if the connection is secured (SSL/TLS)</param>
        /// <param name="remoteEndPoint">client that connected.</param>
        /// <param name="requestHandler">delegate handling incoming requests.</param>
        /// <param name="disconnectHandler">delegate being called when a client disconnectes</param>
        /// <param name="stream">Stream used for communication</param>
        /// <exception cref="SocketException">If beginreceive fails</exception>
        /// <param name="writer">delegate used to write log entries</param>
        /// <see cref="RequestReceivedHandler"/>
        /// <see cref="ClientDisconnectedHandler"/>
        public HttpClientContextImp(bool secured, IPEndPoint remoteEndPoint, 
                                    RequestReceivedHandler requestHandler,
                                   ClientDisconnectedHandler disconnectHandler,
                                   Stream stream, ILogWriter writer)
        {
            Check.Require(requestHandler, "requestHandler");
            Check.Require(remoteEndPoint, "remoteEndPoint");
            Check.Require(remoteEndPoint.Address, "remoteEndPoint.Address");
            Check.Require(stream, "stream");
            if (!stream.CanWrite || !stream.CanRead)
                throw new ArgumentException("Stream must be writeable and readable.");

            _remoteEndPoint = remoteEndPoint;
            _log = writer ?? NullLogWriter.Instance;
            _parser = new HttpRequestParser(OnRequestCompleted, null);
            _secured = secured;
            _requestHandler = requestHandler;
            _disconnectHandler = disconnectHandler;
            _stream = stream;
            try
            {
                _stream.BeginRead(_buffer, 0, BUFFER_SIZE, OnReceive, null);
            }
            catch (IOException err)
            {
                _log.Write(this, LogPrio.Debug, err.ToString());
                _stream = null;
                _disconnectHandler(this, SocketError.ConnectionAborted);
            }
        }
Пример #13
0
        /// <summary>
        /// Creates an asynchronous logger using the provider log writer.
        /// </summary>
        /// <param name="writer">The log writer that will log the log entries.</param>
        public AsyncLogger(ILogWriter writer)
        {
            if (writer == null)
                throw new ArgumentNullException(nameof(writer));

            this.writer = writer;
        }
Пример #14
0
 public void UnregisterLogWriter(ILogWriter logWriter)
 {
     lock (SyncroObject)
     {
         LogWriters.Remove(logWriter);
     }
 }
Пример #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpContextFactory"/> class.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="bufferSize">Amount of bytes to read from the incoming socket stream.</param>
 /// <param name="factory">Used to create a request parser.</param>
 public HttpContextFactory(ILogWriter writer, int bufferSize, IRequestParserFactory factory)
 {
     _logWriter = writer;
     _bufferSize = bufferSize;
     _factory = factory;
     _contextTimeoutManager = new ContextTimeoutManager(ContextTimeoutManager.MonitorType.Thread);
 }
Пример #16
0
		public MSBuildResult Run (
			ProjectConfigurationInfo[] configurations, ILogWriter logWriter, MSBuildVerbosity verbosity,
			string[] runTargets, string[] evaluateItems, string[] evaluateProperties)
		{
			MSBuildResult result = null;
			BuildEngine.RunSTA (delegate {
				try {
					var project = SetupProject (configurations);
					currentLogWriter = logWriter;

					buildEngine.Engine.UnregisterAllLoggers ();

					var logger = new LocalLogger (file);
					buildEngine.Engine.RegisterLogger (logger);
					if (logWriter != null) {
						buildEngine.Engine.RegisterLogger (consoleLogger);
						consoleLogger.Verbosity = GetVerbosity (verbosity);
					}

					if (runTargets != null && runTargets.Length > 0) {
						// We are using this BuildProject overload and the BuildSettings.None argument as a workaround to
						// an xbuild bug which causes references to not be resolved after the project has been built once.
						buildEngine.Engine.BuildProject (project, runTargets, new Hashtable (), BuildSettings.None);
					}

					result = new MSBuildResult (logger.BuildResult.ToArray ());

					if (evaluateProperties != null) {
						foreach (var name in evaluateProperties)
							result.Properties [name] = project.GetEvaluatedProperty (name);
					}

					if (evaluateItems != null) {
						foreach (var name in evaluateItems) {
							BuildItemGroup grp = project.GetEvaluatedItemsByName (name);
							var list = new List<MSBuildEvaluatedItem> ();
							foreach (BuildItem item in grp) {
								var evItem = new MSBuildEvaluatedItem (name, UnescapeString (item.FinalItemSpec));
								foreach (DictionaryEntry de in (IDictionary) evaluatedMetadataField.GetValue (item)) {
									evItem.Metadata [(string)de.Key] = UnescapeString ((string)de.Value);
								}
								list.Add (evItem);
							}
							result.Items[name] = list;
						}
					}
				} catch (InvalidProjectFileException ex) {
					var r = new MSBuildTargetResult (
						file, false, ex.ErrorSubcategory, ex.ErrorCode, ex.ProjectFile,
						ex.LineNumber, ex.ColumnNumber, ex.EndLineNumber, ex.EndColumnNumber,
						ex.BaseMessage, ex.HelpKeyword);
					logWriter.WriteLine (r.ToString ());
					result = new MSBuildResult (new [] { r });
				} finally {
					currentLogWriter = null;
				}
			});
			return result;
		}
Пример #17
0
 public Log(ILogWriter traceWriter, ILogWriter eventLogWriter, string system, bool logSuccesAudit, bool logFailureAudit)
 {
     this.traceWriter = traceWriter;
     this.eventLogWriter = eventLogWriter;
     systemLogging = system;
     this.logSuccesAudit = logSuccesAudit;
     this.logFailureAudit = logFailureAudit;
 }
Пример #18
0
 public static void AddLogWriter(ILogWriter logWriter, ILogFormatter logFormatter)
 {
     logWriters.Add(new LogWriterInfo()
     {
         logWriter = logWriter,
         logFormatter = logFormatter
     });
 }
Пример #19
0
        /// <summary>
        /// Create a new request parser
        /// </summary>
        /// <param name="requestCompleted">delegate called when a complete request have been generated</param>
        /// <param name="logWriter">delegate receiving log entries.</param>
        public HttpRequestParser(RequestCompletedHandler requestCompleted, ILogWriter logWriter)
        {
            if (requestCompleted == null)
                throw new ArgumentNullException("requestCompleted");

            _log = logWriter ?? NullLogWriter.Instance;
            RequestCompleted = requestCompleted;
        }
		public MSBuildResult[] RunTarget (string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter,
			MSBuildVerbosity verbosity)
		{
			if (target == null)
				throw new ArgumentNullException ("target");

			return builder.RunTarget (target, configurations, logWriter, verbosity);
		}
Пример #21
0
        public Logger(ILogWriter logWriter)
        {
            if (logWriter == null)
            {
                throw new ArgumentNullException("logWriter");
            }

            this.logWriter = logWriter;
        }
Пример #22
0
 public static void UnregisterLogWriter(ILogWriter writer)
 {
     lock (_writersLock)
     {
         int index = Writers.IndexOf(writer);
         if (index != -1)
             Writers.RemoveAt(index);
     }
 }
Пример #23
0
		/// <summary>
		/// Dumps the element ids.
		/// </summary>
		/// <param name="document">The document.</param>
		/// <param name="logWriter">The log writer.</param>
		public static void DumpElements(Document document, ILogWriter logWriter)
		{
			logWriter.LogAction("Dump:");
			IHTMLElementCollection elements = elementCollection(document);
			foreach (IHTMLElement e in elements)
			{
				logWriter.LogAction("id = " + e.id);
			}
		}
		/// <summary>
		/// Prepares the logging infrastructure
		/// </summary>
		void InitLogger (ILogWriter logWriter)
		{
			currentLogWriter = logWriter;
			if (currentLogWriter != null) {
				log.Clear ();
				flushingLog = false;
				flushTimer = new Timer (o => FlushLog ());
			}
		}
Пример #25
0
 /// <inheritdoc />
 public void AddWriter(ILogWriter writer)
 {
     // Log the writers before adding a new item.
     lock (this.writers)
     {
         // Use a Tuple so we can provide a lock object.
         this.writers.Add(new Tuple<ILogWriter, object>(writer, new object()));
     }
 }
		/// <summary>
		/// Flushes the log that has not yet been sent and disposes the logging infrastructure
		/// </summary>
		void DisposeLogger ()
		{
			if (currentLogWriter != null) {
				flushTimer.Dispose ();
				flushTimer = null;
				FlushLog ();
				currentLogWriter = null;
			}
		}
Пример #27
0
 public LogCollector(IQueued<LogItem> qThread, ILogWriter writer)
 {
     this.writer = writer;
     filterQue = new ConcurrentQueue<Action<HashSet<int>>>();
     filter = new HashSet<int>();
     this.qThread = qThread;
     qThread.SetTimeout(writer.GetTimeout());
     qThread.OnReceive += Receive;
     qThread.OnTimeout += TimeOut;
 }
Пример #28
0
		/// <summary>
		/// Dumps the elements with HTML source.
		/// </summary>
		/// <param name="document">The document.</param>
		/// <param name="logWriter">The log writer.</param>
		public static void DumpElementsWithHtmlSource(Document document, ILogWriter logWriter)
		{
			logWriter.LogAction("Dump:==================================================");
			IHTMLElementCollection elements = elementCollection(document);
			foreach (IHTMLElement e in elements)
			{
				logWriter.LogAction("------------------------- " + e.id);
				logWriter.LogAction(e.outerHTML);
			}
		}
Пример #29
0
		public MSBuildResult[] RunTarget (string target, string configuration, string platform, ILogWriter logWriter,
			MSBuildVerbosity verbosity)
		{
			if (target == null)
				throw new ArgumentNullException ("target");
			if (configuration == null)
				throw new ArgumentNullException ("configuration");
			
			return builder.RunTarget (target, configuration, platform, logWriter, verbosity);
		}
Пример #30
0
        public MainForm()
        {
            InitializeComponent();

            _Spinner.Image = Properties.Resources.spinner;
            _userLog = new LogWriterListView(_logListView);

            Task.Run(() => Init());

            Closing += OnClose;
        }
Пример #31
0
        /// <summary>
        /// 将数据发送到业务系统中
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        public void PostMessage(string url, string data, ILogWriter _log)
        {
            //发送消息到回调接口

            if (string.IsNullOrEmpty(url))
            {
                _log.Info("CenterInterface配置为空");
                return;
            }
            _log.Info($"{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")} 回调{url}接口。");
            //实例化
            NewWebClient client = new NewWebClient();

            //参数转流
            byte[] bytearray = Encoding.UTF8.GetBytes(data);
            //采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可
            client.Headers.Add("Content-Type", "application/json;charset=UTF-8");
            client.Headers.Add("ContentLength", bytearray.Length.ToString());//长度

            //上传,post方式,并接收返回数据(这是同步,需要等待接收返回值)

            try
            {
                byte[] responseData = client.UploadData(url, "POST", bytearray);
                //释放
                client.Dispose();
                //处理返回数据
                string rel = Encoding.UTF8.GetString(responseData);


                if (!string.IsNullOrEmpty(rel))
                {
                    _log.Info($"{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")} 回调{url}接口返回内容:{rel}");
                }
            }
            catch (Exception ex)
            {
                _log.Info($"发送Post数据时出错:{ex.Message}");
            }
        }
Пример #32
0
        public FunctionInstanceLogger(
            Func <string, FunctionDescriptor> funcLookup,
            IMetricsLogger metrics,
            string hostName,
            string accountConnectionString, // May be null
            TraceWriter trace) : this(funcLookup, metrics)
        {
            if (trace == null)
            {
                throw new ArgumentNullException(nameof(trace));
            }

            if (accountConnectionString != null)
            {
                CloudStorageAccount account = CloudStorageAccount.Parse(accountConnectionString);
                var client        = account.CreateCloudTableClient();
                var tableProvider = LogFactory.NewLogTableProvider(client);

                string containerName = Environment.MachineName;
                this._writer = LogFactory.NewWriter(hostName, containerName, tableProvider, (e) => OnException(e, trace));
            }
        }
Пример #33
0
        private int Test_Get_GetList(ILogWriter writer, int count)
        {
            Guid     guid = Guid.NewGuid();
            DateTime t1   = DateTime.Now;
            DateTime t2   = DateTime.Now;

            try {
                writer.Get <ExceptionInfo>(guid);
            }
            catch (NotImplementedException) {
                count++;
            }

            try {
                writer.GetList <ExceptionInfo>(t1, t2);
            }
            catch (NotImplementedException) {
                count++;
            }

            return(count);
        }
Пример #34
0
        internal static void Write(this ILogWriter writer,
                                   NetworkStream readStream,
                                   long checkpointSize)
        {
            var blockSize = 1024 * 1024;
            var buffer    = new byte[blockSize];

            while (checkpointSize > 0)
            {
                int bytesRead;
                if (checkpointSize >= blockSize)
                {
                    bytesRead = readStream.Read(buffer, 0, blockSize);
                }
                else
                {
                    bytesRead = readStream.Read(buffer, 0, (int)checkpointSize);
                }
                writer.Write(buffer, 0, bytesRead);
                checkpointSize -= bytesRead;
            }
        }
        public FunctionInstanceLogger(
            IFunctionMetadataManager metadataManager,
            IProxyMetadataManager proxyMetadataManager,
            IMetricsLogger metrics,
            IHostIdProvider hostIdProvider,
            IConfiguration configuration,
            ILoggerFactory loggerFactory)
            : this(metadataManager, proxyMetadataManager, metrics)
        {
            if (hostIdProvider == null)
            {
                throw new ArgumentNullException(nameof(hostIdProvider));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            string accountConnectionString = configuration.GetWebJobsConnectionString(ConnectionStringNames.Dashboard);

            if (accountConnectionString != null)
            {
                CloudStorageAccount account = CloudStorageAccount.Parse(accountConnectionString);
                var client        = account.CreateCloudTableClient();
                var tableProvider = LogFactory.NewLogTableProvider(client);

                ILogger logger = loggerFactory.CreateLogger(ScriptConstants.LogCategoryHostGeneral);

                string hostId        = hostIdProvider.GetHostIdAsync(CancellationToken.None).GetAwaiter().GetResult() ?? "default";
                string containerName = Environment.MachineName;
                _writer = LogFactory.NewWriter(hostId, containerName, tableProvider, (e) => OnException(e, logger));
            }
        }
Пример #36
0
        public AsyncQueueLogWriter(ILogWriter logWriter, int batchSize, TimeSpan writeTimeout, ILogEventFilter filter) : base(filter)
        {
            if (logWriter == null)
            {
                throw new ArgumentNullException(nameof(logWriter));
            }

            _BatchSize    = batchSize;
            _WriteTimeout = writeTimeout;

            if (writeTimeout.TotalMilliseconds > 0)
            {
                _BufferTimeoutTimer = new System.Threading.Timer((reserved) => SetWriteEventsSignal(), null, TimeSpan.Zero, TimeSpan.Zero);
            }

            _WriteBufferedEventsSignal = new System.Threading.ManualResetEvent(false);
            _BufferedLogEvents         = new System.Collections.Concurrent.ConcurrentQueue <LogEvent>();
            _LogWriter = logWriter;

            //TODO: Start thread that does write here.
            //TODO: Implement IDisposable.
        }
Пример #37
0
        public NodeLogger(
            [NotNull] IParametersParser parametersParser,
            [NotNull] ILogWriter logWriter,
            [NotNull] ILoggerContext context,
            [NotNull] IEnvironment environment,
            [NotNull] IDiagnostics diagnostics,
            [NotNull] IBuildEventHandler <BuildStartedEventArgs> buildStartedHandler,
            [NotNull] IBuildEventHandler <BuildMessageEventArgs> messageHandler,
            [NotNull] IBuildEventHandler <BuildFinishedEventArgs> buildFinishedHandler,
            [NotNull] IBuildEventHandler <ProjectStartedEventArgs> projectStartedHandler,
            [NotNull] IBuildEventHandler <ProjectFinishedEventArgs> projectFinishedHandler,
            [NotNull] IBuildEventHandler <TargetStartedEventArgs> targetStartedHandler,
            [NotNull] IBuildEventHandler <TargetFinishedEventArgs> targetFinishedHandler,
            [NotNull] IBuildEventHandler <TaskStartedEventArgs> taskStartedHandler,
            [NotNull] IBuildEventHandler <TaskFinishedEventArgs> taskFinishedHandler,
            [NotNull] IBuildEventHandler <BuildErrorEventArgs> errorHandler,
            [NotNull] IBuildEventHandler <BuildWarningEventArgs> warningHandler,
            [NotNull] IBuildEventHandler <CustomBuildEventArgs> customEventHandler)
        {
            _context          = context ?? throw new ArgumentNullException(nameof(context));
            _environment      = environment ?? throw new ArgumentNullException(nameof(environment));
            _diagnostics      = diagnostics ?? throw new ArgumentNullException(nameof(diagnostics));
            _parametersParser = parametersParser ?? throw new ArgumentNullException(nameof(parametersParser));
            _logWriter        = logWriter ?? throw new ArgumentNullException(nameof(logWriter));

            _buildStartedEventHandler = buildStartedHandler ?? throw new ArgumentNullException(nameof(buildStartedHandler));
            _messageHandler           = messageHandler ?? throw new ArgumentNullException(nameof(messageHandler));
            _buildFinishedHandler     = buildFinishedHandler ?? throw new ArgumentNullException(nameof(buildFinishedHandler));
            _projectStartedHandler    = projectStartedHandler ?? throw new ArgumentNullException(nameof(projectStartedHandler));
            _projectFinishedHandler   = projectFinishedHandler ?? throw new ArgumentNullException(nameof(projectFinishedHandler));
            _targetStartedHandler     = targetStartedHandler ?? throw new ArgumentNullException(nameof(targetStartedHandler));
            _targetFinishedHandler    = targetFinishedHandler ?? throw new ArgumentNullException(nameof(targetFinishedHandler));
            _taskStartedHandler       = taskStartedHandler ?? throw new ArgumentNullException(nameof(taskStartedHandler));
            _taskFinishedHandler      = taskFinishedHandler ?? throw new ArgumentNullException(nameof(taskFinishedHandler));
            _errorHandler             = errorHandler ?? throw new ArgumentNullException(nameof(errorHandler));
            _warningHandler           = warningHandler ?? throw new ArgumentNullException(nameof(warningHandler));
            _customEventHandler       = customEventHandler ?? throw new ArgumentNullException(nameof(customEventHandler));
        }
Пример #38
0
        protected override void InternalStart()
        {
            lock (this)
            {
                var logManagerTracer = SetupTracerFactory.TracerFor(this);

                if (_logWriters.Count > 0)
                {
                    logManagerTracer.Debug("Stopping LogManager before re-starting it...");
                    Stop();
                }

                foreach (ILogWriterConfig logWriterConfig in Config.Writers)
                {
                    if (_logWriters.ContainsKey(logWriterConfig))
                    {
                        // Occurs when the logWriterConfig already exists - this shouldn't happen
                        var tracer = SetupTracerFactory.TracerFor(logWriterConfig);
                        tracer.Severe("LogWriterConfig {0} is already active - this shouldn't happen.  Skipping it...", logWriterConfig);
                        continue;
                    }

                    ILogWriter logWriter = CreateLogWriter(logWriterConfig);

                    if (logWriter != null)
                    {
                        (logWriter as IStartable).SafeStart(SetupTracerFactory);

                        _logWriters.Add(logWriterConfig, logWriter);

                        if (logWriterConfig.DisposeOnStop)
                        {
                            DisposeOnStop(logWriter);
                        }
                    }
                }
            }
        }
Пример #39
0
        /// <summary>
        /// get a writer
        /// </summary>
        /// <param name="level"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public virtual ILogWriter GetWriter(LogLevel level, string name)
        {
            ILogWriter writer = null;

            lock (this.writerDictionary)
            {
                if (this.writerDictionary.TryGetValue(name, out writer) == false)
                {
                    writer           = new LogAgentWriter(level, name);
                    writer.Writing  += this.OnWriting;
                    writer.Disposed += this.OnDisposed;
                    //
                    if (this.levelFlags > 0)
                    {
                        writer.Enable = (this.levelFlags & (int)level) == (int)level;
                    }
                    //
                    this.writerDictionary.Add(name, writer);
                }
            }
            //
            return(writer);
        }
Пример #40
0
        // ILogWriter logWriter, IEnumerable<ILogEventContextProvider> contextProviders, ILogClock logClock
        public Logger(LogPolicy policy)
        {
            if (policy == null)
            {
                throw new ArgumentNullException(nameof(policy));
            }
            if (policy.LogWriter == null)
            {
                throw new ArgumentException("policy.LogWriter cannot be null", nameof(policy));
            }

            _EntryPool = new LogEventPool();
            _LogWriter = policy.LogWriter;
            _LogClock  = policy.Clock;
            _Filter    = policy.Filter;

            if (policy.ContextProviders != null)
            {
                _ContextProviders = (policy.ContextProviders as ILogEventContextProvider[]) ?? policy.ContextProviders.ToArray();
            }

            _IsEnabled = true;
        }
Пример #41
0
 private void SetExceptionWriter()
 {
     if (string.IsNullOrEmpty(_config.ExceptionWriter) == false)
     {
         string writerTypeName = null;
         if (_writerNameTypeDict.TryGetValue(_config.ExceptionWriter, out writerTypeName))
         {
             // 保存写日志发生异常的Writer,单个实例
             try {
                 Type       t        = Type.GetType(writerTypeName, true);
                 ILogWriter instance = (ILogWriter)Activator.CreateInstance(t);                          // 测试类型是否符合要求
                 _writersTable[WriterFactory.ExceptionWriterKey] = t;
             }
             catch (Exception ex) {
                 throw new LogConfigException("日志配置文件中,指定的Writer无效:" + writerTypeName, ex);
             }
         }
         else
         {
             throw new LogConfigException("日志配置文件中,指定的Writer无效:" + _config.ExceptionWriter);
         }
     }
 }
Пример #42
0
        private void ReplaceDb(string pathToDbFile, ILogWriter applicationLog, Exception exception)
        {
            string backupFileName = string.Format(
                "{0}_{1}.invalid",
                pathToDbFile,
                DateTime.UtcNow.ToString("yyyy-MM-ddThh-mm-ss"));

            File.Copy(pathToDbFile, backupFileName);

            File.Delete(pathToDbFile);

            this.CreateNewDb(pathToDbFile);

            applicationLog.AddEntry(
                new LogEntry(
                    MessageLevel.Warning,
                    ClassName,
                    string.Format(
                        "Invalid database file found at {0}. Replacement file created.{1}Error:{2}",
                        pathToDbFile,
                        Environment.NewLine,
                        exception.Message)));
        }
Пример #43
0
        /// <inheritdoc />
        public void RemoveWriter(ILogWriter writer)
        {
            Tuple <ILogWriter, object> toRemove = null;

            // Log the writers before removing the item.
            lock (this.writers)
            {
                // Enumerate and find the correct writer pair.
                foreach (var keyValuePair in this.writers)
                {
                    if (keyValuePair.Item1 == writer)
                    {
                        toRemove = keyValuePair;
                        break;
                    }
                }
                // Remove the Tuple if we found one.
                if (toRemove != null)
                {
                    this.writers.Remove(toRemove);
                }
            }
        }
Пример #44
0
        private bool QueryPointcut <TPointcut, TItem>(
            ILogWriter logger,
            IDictionary <AssemblyDefinition, TypeDefinition[]> asmTypes,
            KeyValuePair <PointcutExpression, IPointcut> pointcut,
            Func <TypeDefinition[], TPointcut, IEnumerable <TItem> > queryAction,
            Func <IEnumerable <TItem>, IEnumerable <CodeTree.TypeNode> > createTypeNodes
            ) where TPointcut : class, IPointcut
        {
            var tPointcut = pointcut.Value as TPointcut;

            if (tPointcut == null)
            {
                return(false);
            }

            Dictionary <AssemblyDefinition, TItem[]> filteredAsmTypes;

            try
            {
                logger.Append("STARTED: executing pointcut '{0}'...", tPointcut.Name);
                filteredAsmTypes = asmTypes.AsParallel().ToDictionary(
                    asmType => asmType.Key,
                    asmType => queryAction(asmType.Value, tPointcut).ToArray());
                logger.Append("COMPLETED: executing pointcut '{0}'", tPointcut.Name);
            }
            catch (Exception e)
            {
                logger.Append("ERROR executing pointcut '{0}'. Reason: '{1}'", tPointcut.Name, e.Message);
                filteredAsmTypes = asmTypes.ToDictionary(x => x.Key, x => new TItem[0]);
            }

            _treeDispatcher.BeginInvoke(new Action(() =>
                                                   _result.AddPointcut(tPointcut,
                                                                       string.Format("[{0}(\"{1}\")]", pointcut.Key.AttributeName, pointcut.Key.Saql),
                                                                       filteredAsmTypes.Select(x => new CodeTree.AssemblyNode(x.Key, createTypeNodes(x.Value))))));
            return(true);
        }
Пример #45
0
        private async Task ReadImageFileIntoStream(
            Stream outputStream,
            Stream inputStream,
            List <byte> boundaryStartLine,
            int imageDataStartPosition,
            ILogWriter logger)
        {
            // inputStream should at this point be positioned at the start of the actual image data
            // in the multipart content. Calculate where the image data actually ends, by calculating
            // where the multipard end-line begins.
            long lastPositionToRead = inputStream.Length - (boundaryStartLine.Count + 4);

            logger.LogInformation($"First byte of image data is at {imageDataStartPosition}, last byte is at {lastPositionToRead}");

            // read photo file content into memory stream
            byte[] buffer     = new byte[8 * KBYTE];
            long   currentPos = imageDataStartPosition;
            int    readBytes;

            do
            {
                // Calculate size of next chunk to read. Read 8 KB if there is more than
                // 8 KB left to read, otherwise read whatever is left
                int nextChunkSize = (int)Math.Min(8 * KBYTE, lastPositionToRead - currentPos);

                // Read next chunk of data, making note of how much we actually got
                readBytes = await inputStream.ReadAsync(buffer, 0, nextChunkSize);

                // Write the bytes that we got onto the output stream
                await outputStream.WriteAsync(buffer, 0, readBytes);

                // Advance the position counter
                currentPos += readBytes;
            } while (currentPos < lastPositionToRead);

            logger.LogInformation($"Image read into memory. currentPos = '{currentPos}'");
        }
Пример #46
0
        private void LoadWritersType()
        {
            if (_config.Writers == null || _config.Writers.Length == 0)
            {
                throw new LogConfigException("日志配置文件中,没有配置Writers节点。");
            }


            foreach (var w in _config.Writers)
            {
                if (string.IsNullOrEmpty(w.Name))
                {
                    throw new LogConfigException("日志配置文件中,写入器的 Name 属性不能为空。");
                }

                if (string.IsNullOrEmpty(w.Type))
                {
                    throw new LogConfigException("日志配置文件中,写入器的 Type 属性不能为空。");
                }

                // 如果指定的类型不正确,下面代码会抛出异常
                Type t = Type.GetType(w.Type, true);

                if (typeof(ILogWriter).IsAssignableFrom(t) == false)
                {
                    throw new LogConfigException("日志配置文件中,指定的WriteType没有实现接口ILogWriter:" + w.Type);
                }

                ILogWriter instance = Activator.CreateInstance(t) as ILogWriter;
                instance.Init(w);

                _writerNameTypeDict[w.Name] = w.Type;
            }

            // 增加一个内置的,可用于开发环境中不写日志
            _writerNameTypeDict["NULL"] = "ClownFish.Log.Serializer.NullWriter, ClownFish.Log";
        }
Пример #47
0
        /// <summary>
        /// Initializes a new instance of the <see cref="HttpClientContext"/> class.
        /// </summary>
        /// <param name="secured">true if the connection is secured (SSL/TLS)</param>
        /// <param name="remoteEndPoint">client that connected.</param>
        /// <param name="stream">Stream used for communication</param>
        /// <param name="clientCertificate">Client security certificate</param>
        /// <param name="parserFactory">Used to create a <see cref="IHttpRequestParser"/>.</param>
        /// <param name="bufferSize">Size of buffer to use when reading data. Must be at least 4096 bytes.</param>
        /// <param name="socket">Client socket</param>
        /// <exception cref="SocketException">If <see cref="Socket.BeginReceive(byte[],int,int,SocketFlags,AsyncCallback,object)"/> fails</exception>
        /// <exception cref="ArgumentException">Stream must be writable and readable.</exception>
        public HttpClientContext(bool secured, IPEndPoint remoteEndPoint, Stream stream,
                                 ClientCertificate clientCertificate, IRequestParserFactory parserFactory, int bufferSize, Socket socket)
        {
            Check.Require(remoteEndPoint, "remoteEndPoint");
            Check.NotEmpty(remoteEndPoint.Address.ToString(), "remoteEndPoint.Address");
            Check.Require(stream, "stream");
            Check.Require(parserFactory, "parser");
            Check.Min(4096, bufferSize, "bufferSize");
            Check.Require(socket, "socket");

            if (!stream.CanWrite || !stream.CanRead)
            {
                throw new ArgumentException("Stream must be writable and readable.");
            }

            _bufferSize                  = bufferSize;
            RemoteAddress                = remoteEndPoint.Address.ToString();
            RemotePort                   = remoteEndPoint.Port.ToString();
            _log                         = NullLogWriter.Instance;
            _parser                      = parserFactory.CreateParser(_log);
            _parser.RequestCompleted    += OnRequestCompleted;
            _parser.RequestLineReceived += OnRequestLine;
            _parser.HeaderReceived      += OnHeaderReceived;
            _parser.BodyBytesReceived   += OnBodyBytesReceived;
            _localEndPoint               = (IPEndPoint)socket.LocalEndPoint;

            HttpRequest request = new HttpRequest();

            request._remoteEndPoint = remoteEndPoint;
            request.Secure          = secured;
            _currentRequest         = request;

            IsSecured          = secured;
            _stream            = stream;
            _clientCertificate = clientCertificate;
            _buffer            = new byte[bufferSize];
        }
Пример #48
0
        public ReportsModule(IServiceLocator locator)
        {
            _locator = locator;
            var logger          = locator.GetInstance <ILogWriter>();
            var regionManager   = locator.GetInstance <IRegionManager>();
            var pluginTracker   = locator.GetInstance <IPluginModuleTracker>();
            var eventAggregator = locator.GetInstance <IEventAggregator>();

            if (logger == null)
            {
                throw new NullReferenceException("logger of type \"ILoggerFacade\" is required and should not be null.");
            }

            if (regionManager == null)
            {
                throw new NullReferenceException("regionManager should not be null.");
            }

            if (pluginTracker == null)
            {
                throw new NullReferenceException("pluginTracker should not be null.");
            }

            if (eventAggregator == null)
            {
                throw new NullReferenceException("Event Aggregator should not be null.");
            }

            _logger        = logger;
            _regionManager = regionManager;
            _pluginTracker = pluginTracker;
            _pluginTracker.RecordModuleConstructed(this.GetType().Assembly.GetName().Name);
            _eventAggregator = eventAggregator;

            // Register the views in this module.
            //_regionManager.RegisterViewWithRegion("DataSetListView", typeof(Views.DataSetListView));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="EntityImporter{TStrategy, TEntity, TKey}"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="sessionFactoryProvider">The session factory provider.</param>
        /// <param name="dataproviders">The dataproviders.</param>
        /// <param name="configurationService">The configuration service.</param>
        protected EntityImporter(ILogWriter logger
                                 , [Import(RequiredCreationPolicy = CreationPolicy.NonShared)]
                                 IDomainSessionFactoryProvider sessionFactoryProvider
                                 , IEnumerable <IDataReaderDictionary> dataproviders
                                 , IConfigurationService configurationService)
        {
            Logger          = logger;
            SessionFactory  = sessionFactoryProvider.SessionFactory;
            SessionProvider = sessionFactoryProvider;
            FirstImport     = false;
            EntityStrategy  = new TStrategy();
            var max = dataproviders.Max(d => d.VersionAttribute.Version);

            DataProvider         = dataproviders.FirstOrDefault(d => d.VersionAttribute.Version == max);
            ConfigurationService = configurationService;

            EventAggregator = ServiceLocator.Current.GetInstance <IEventAggregator>();

            OnFeedback += (sender, args) =>
            {
                if (!IsBackground)
                {
                    EventAggregator.GetEvent <MessageUpdateEvent>()
                    .Publish(new MessageUpdateEvent {
                        Message = args.Data.ToString()
                    });
                }
                else
                {
                    EventAggregator.GetEvent <UiMessageUpdateEventForeGround>()
                    .Publish(new UiMessageUpdateEventForeGround()
                    {
                        Message = args.Data.ToString()
                    });
                }
            };
        }
Пример #50
0
        public ConfigurationModule(IServiceLocator locator)
        {
            var logger               = locator.GetInstance <ILogWriter>();
            var regionManager        = locator.GetInstance <IRegionManager>();
            var pluginTracker        = locator.GetInstance <IPluginModuleTracker>();
            var configurationService = locator.GetInstance <IConfigurationService>();

            if (logger == null)
            {
                throw new NullReferenceException("logger of type \"ILoggerFacade\" is required and should not be null.");
            }

            if (regionManager == null)
            {
                throw new NullReferenceException("regionManager should not be null.");
            }

            if (configurationService == null)
            {
                throw new NullReferenceException("logger of type \"IConfigurationService\" is required and should not be null.");
            }

            if (pluginTracker == null)
            {
                throw new NullReferenceException("pluginTracker should not be null.");
            }

            _logger               = logger;
            _regionManager        = regionManager;
            _configurationService = configurationService;
            _pluginTracker        = pluginTracker;
            _pluginTracker.RecordModuleConstructed(GetType().Assembly.GetName().Name);

            // Register the views in this module.
            //_regionManager.RegisterViewWithRegion("DataSetListView", typeof(Views.DataSetListView));
        }
Пример #51
0
        static void Main(string[] args)
        {
            string warningText     = "warning by";
            string errorText       = "error by";
            string infoText        = "info by";
            string stringSeparator = " ";

            ILogWriter consoleLogWriter = SingletoneConsoleLogWriter.GetConsoleLogWriterInstance();

            consoleLogWriter.LogWarning(warningText + stringSeparator + nameof(consoleLogWriter));
            consoleLogWriter.LogError(errorText + stringSeparator + nameof(consoleLogWriter));
            consoleLogWriter.LogInfo(infoText + stringSeparator + nameof(consoleLogWriter));

            ILogWriter fileLogWriter = SingletoneFileLogWriter.GetFileLogWriterInstance();

            fileLogWriter.LogWarning(warningText + stringSeparator + nameof(fileLogWriter));
            fileLogWriter.LogError(errorText + stringSeparator + nameof(fileLogWriter));
            fileLogWriter.LogInfo(infoText + stringSeparator + nameof(fileLogWriter));

            ILogWriter oneMoreConsoleWriter = SingletoneConsoleLogWriter.GetConsoleLogWriterInstance();
            ILogWriter oneMoreFileWriter    = SingletoneFileLogWriter.GetFileLogWriterInstance();

            List <ILogWriter> LogWriterList = new List <ILogWriter>
            {
                oneMoreConsoleWriter,
                oneMoreFileWriter
            };

            ILogWriter multipleLogWriter = SingletoneMultipleLogWriter.GetMultipleLogWriterInstance();

            SingletoneMultipleLogWriter.GetMultipleLogWriterInstance().LogWriterList = LogWriterList;
            multipleLogWriter.LogWarning(warningText + stringSeparator + nameof(multipleLogWriter));
            multipleLogWriter.LogError(errorText + stringSeparator + nameof(multipleLogWriter));
            multipleLogWriter.LogInfo(infoText + stringSeparator + nameof(multipleLogWriter));
            System.Console.ReadKey();
        }
Пример #52
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LoginListView"/> class.
        /// </summary>
        /// <param name="source">The source.</param>
        public LoginListView(List <Login> source, ILogWriter logWriter)
            : base("Аккаунты", source)
        {
            _logWriter = logWriter;
            Sites      = EnumHelper.GetData(typeof(Site));

            ContextMenu.Add(new MenuItem
            {
                Header  = "Войти на сайт",
                Command = new DelegateCommand(DoLogon, HasSelection)
            });

            ContextMenu.Add(new MenuItem
            {
                Header  = "Очистить объявы",
                Command = new DelegateCommand(DoClear, HasSelection)
            });

            ContextMenu.Add(new MenuItem
            {
                Header  = "Поднять объявы",
                Command = new DelegateCommand(DoUp, HasSelection)
            });
        }
Пример #53
0
        public ILogWriter CreateProxyFor(ILogWriter innerLogWriter, int maxQueueLength = DefaultMaxQueueLength)
        {
            Contract.Requires <ArgumentNullException>(innerLogWriter != null);
            Contract.Requires <ArgumentException>(maxQueueLength > 0);

            lock (this)
            {
                EnsureNotDisposed();
                OperationNotSupportedWhenStarted("CreateProxyFor(ILogWriter)");

                var logWriter = new LogWriterProxy(innerLogWriter, _backgroundActionQueue, _setupTracerFactory);
                foreach (var kvp in innerLogWriter.EntryWriters)
                {
                    Type   entryWriterEntryType     = kvp.Key;
                    object innerEntryWriter         = kvp.Value;
                    var    entryTypeArgs            = new Type[] { entryWriterEntryType };
                    object blockingQueueEntryWriter = this.InvokeGenericMethod(entryTypeArgs, "CreateBlockingQueueLogWriter", innerEntryWriter, maxQueueLength);
                    logWriter.InvokeGenericMethod(entryTypeArgs, "AddEntryWriter", blockingQueueEntryWriter);
                }

                _proxyLogWriters.Add(logWriter);
                return(logWriter);
            }
        }
Пример #54
0
        private static void SearchWriter()
        {
            if (_hasSearched)
            {
                return;
            }

            _hasSearched = true;

            //search all assemblies for ILogWriter
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            foreach (var a in assemblies)
            {
                Type[] types;

                try
                {
                    types = a.GetExportedTypes();
                }
                catch (ReflectionTypeLoadException e)
                {
                    types = e.Types.Where(t => t != null).ToArray();
                }

                var writerType = typeof(ILogWriter);
                var type       = types.FirstOrDefault(t => !t.IsAbstract && writerType.IsAssignableFrom(t));
                if (type == null)
                {
                    continue;
                }

                _logWriter = Activator.CreateInstance(type) as ILogWriter;
                return;
            }
        }
Пример #55
0
 private void ProcessFlushException(List <Exception> exceptions)
 {
     if (exceptions.Count > 0)
     {
         ILogWriter retryLogger = WriterFactory.GetRetryWriter();                                // 获取重试日志序列化器
         if (retryLogger != null)
         {
             try {
                 List <ExceptionInfo> list = (from x in exceptions select ExceptionInfo.Create(x)).ToList();
                 retryLogger.Write(list);
             }
             catch (Exception ex) {
                 LogHelper.RaiseErrorEvent(ex);
             }
         }
         else
         {
             foreach (Exception ex in exceptions)
             {
                 LogHelper.RaiseErrorEvent(ex);
             }
         }
     }
 }
Пример #56
0
        /// <summary>
        /// 注册日志记录器
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="identifier"></param>
        /// <returns></returns>
        public static bool RegisterWriter(ILogWriter writer, string identifier)
        {
            if (writer == null || string.IsNullOrWhiteSpace(identifier))
            {
                return(false);
            }

            identifier = identifier.ToLower();
            if (_queueDict.ContainsKey(identifier))
            {
                return(false);
            }

            Queue <LogInfo> infoQueue = new Queue <LogInfo>();

            _queueDict.Add(identifier, infoQueue);
            ThreadPool.QueueUserWorkItem(i =>
            {
                while (true)
                {
                    if (infoQueue.Count > 0)
                    {
                        lock (infoQueue)
                        {
                            LogInfo logInfo = infoQueue.Dequeue();
                            writer.WriteLog(logInfo.Message, logInfo.LogLevel);
                        }
                    }
                    else
                    {
                        Thread.Sleep(100);
                    }
                }
            });
            return(true);
        }
Пример #57
0
        static void Main(string[] args)
        {
            string warningText     = "warning by";
            string errorText       = "error by";
            string infoText        = "info by";
            string stringSeparator = " ";

            LogWriterFactory factory = LogWriterFactory.GetLogWriterFactoryInstance();

            ILogWriter consoleLogWriter = factory.GetLogWriter <ConsoleLogWriter>(null);

            consoleLogWriter.LogWarning(warningText + stringSeparator + consoleLogWriter.GetType());
            consoleLogWriter.LogError(errorText + stringSeparator + consoleLogWriter.GetType());
            consoleLogWriter.LogInfo(infoText + stringSeparator + consoleLogWriter.GetType());

            ILogWriter fileLogWriter = factory.GetLogWriter <FileLogWriter>($"log.txt");

            fileLogWriter.LogWarning(warningText + stringSeparator + fileLogWriter.GetType());
            fileLogWriter.LogError(errorText + stringSeparator + fileLogWriter.GetType());
            fileLogWriter.LogInfo(infoText + stringSeparator + fileLogWriter.GetType());

            ILogWriter oneMoreConsoleWriter = new ConsoleLogWriter();
            ILogWriter oneMoreFileWriter    = new FileLogWriter($"log.txt");

            List <ILogWriter> LogWriterList = new List <ILogWriter>
            {
                oneMoreConsoleWriter,
                oneMoreFileWriter
            };

            ILogWriter multipleLogWriter = factory.GetLogWriter <MultipleLogWriter>(LogWriterList);

            multipleLogWriter.LogWarning(warningText + stringSeparator + multipleLogWriter.GetType());
            multipleLogWriter.LogError(errorText + stringSeparator + multipleLogWriter.GetType());
            multipleLogWriter.LogInfo(infoText + stringSeparator + multipleLogWriter.GetType());
        }
 public UserController(ILogWriter log, IBusinessAccess businessAccess)
 {
     _log            = log;
     _businessAccess = businessAccess;
 }
Пример #59
0
            // Write logs. Return what we wrote.
            // This is baseline data. REader will verify against it exactly. This helps in aggressively catching subtle breaking changes.
            private async Task WriteTestLoggingDataAsync(ILogTableProvider provider)
            {
                ILogWriter writer = LogFactory.NewWriter(HostName, "c1", provider);

                string Func1 = "alpha";
                var    time  = new DateTime(2010, 3, 6, 18, 11, 20, DateTimeKind.Utc);

                List <FunctionInstanceLogItem> list     = new List <FunctionInstanceLogItem>();
                List <InvocationLogViewModel>  expected = new List <InvocationLogViewModel>();

                this.ExpectedItems = expected;
                this.Data          = list;

                // List in reverse chronology.
                // Completed Success
                {
                    var item = new FunctionInstanceLogItem
                    {
                        FunctionInstanceId = Guid.NewGuid(),
                        FunctionName       = Func1,
                        StartTime          = time,
                        EndTime            = time.AddMinutes(2), // Completed
                        LogOutput          = "one",
                    };
                    list.Add(item);
                    expected.Add(new InvocationLogViewModel
                    {
                        id       = item.FunctionInstanceId.ToString(),
                        status   = "CompletedSuccess",
                        whenUtc  = "2010-03-06T18:13:20Z", // since it's completed, specifies end-time
                        duration = 120000.0
                    });
                }

                // Completed Error
                {
                    time = time.AddMinutes(-1);
                    var item = new FunctionInstanceLogItem
                    {
                        FunctionInstanceId = Guid.NewGuid(),
                        FunctionName       = Func1,
                        StartTime          = time,
                        EndTime            = time.AddMinutes(2),
                        ErrorDetails       = "some failure", // signifies failure
                        LogOutput          = "two",
                    };
                    list.Add(item);
                    expected.Add(new InvocationLogViewModel
                    {
                        id       = item.FunctionInstanceId.ToString(),
                        status   = "CompletedFailed",
                        whenUtc  = "2010-03-06T18:12:20Z", // end-time.
                        duration = 120000.0
                    });
                }

                // Still running
                {
                    time = time.AddMinutes(-1);
                    var item = new FunctionInstanceLogItem
                    {
                        FunctionInstanceId = Guid.NewGuid(),
                        FunctionName       = Func1,
                        StartTime          = time, // Recent heartbeat
                        LogOutput          = "two",
                    };
                    list.Add(item);
                    expected.Add(new InvocationLogViewModel
                    {
                        id      = item.FunctionInstanceId.ToString(),
                        status  = "Running",
                        whenUtc = "2010-03-06T18:09:20Z", // specifies start-time
                    });
                }

                // Never Finished
                {
                    time = time.AddMinutes(-1);
                    var item = new TestFunctionInstanceLogItem
                    {
                        FunctionInstanceId = Guid.NewGuid(),
                        FunctionName       = Func1,
                        StartTime          = time,                                                   // Never Finished
                        LogOutput          = "two",
                        OnRefresh          = (me) => { me.FunctionInstanceHeartbeatExpiry = time; }, // stale heartbeat
                    };
                    list.Add(item);
                    expected.Add(new InvocationLogViewModel
                    {
                        id       = item.FunctionInstanceId.ToString(),
                        status   = "NeverFinished",
                        whenUtc  = "2010-03-06T18:08:20Z", // starttime
                        duration = null
                    });
                }

                // No heartbeat (legacy example)
                {
                    time = time.AddMinutes(-1);
                    var item = new TestFunctionInstanceLogItem
                    {
                        FunctionInstanceId = Guid.NewGuid(),
                        FunctionName       = Func1,
                        StartTime          = time, // Never Finished
                        LogOutput          = "two",
                        OnRefresh          = (me) => { } // No heart beat
                    };
                    list.Add(item);
                    expected.Add(new InvocationLogViewModel
                    {
                        id      = item.FunctionInstanceId.ToString(),
                        status  = "Running",
                        whenUtc = "2010-03-06T18:07:20Z", // starttime
                    });
                }

                foreach (var item in list)
                {
                    await writer.AddAsync(item);
                }

                await writer.FlushAsync();
            }
 public MetadataDefinitionGroupController(ICommandDispatcher dispatcher, IMetadataDefinitonGroupReadService metadataDefinitonGroupReadService, ILogWriter logWriter)
 {
     _dispatcher = dispatcher;
     _metadataDefinitonGroupReadService = metadataDefinitonGroupReadService;
     _logWriter = logWriter;
 }