/// <summary> /// Starts log streaming for the given website. /// </summary> /// <param name="name">The website name</param> /// <param name="path">The log path, by default root</param> /// <param name="message">The substring message</param> /// <param name="endStreaming">Predicate to end streaming</param> /// <param name="waitInterval">The fetch wait interval</param> /// <returns>The log line</returns> public IEnumerable <string> StartLogStreaming( string name, string path, string message, Predicate <string> endStreaming, int waitInterval) { Repository repository; ICredentials credentials; name = GetWebsiteDeploymentHttpConfiguration(name, out repository, out credentials); path = HttpUtility.UrlEncode(path); message = HttpUtility.UrlEncode(message); RemoteLogStreamManager manager = new RemoteLogStreamManager( repository.RepositoryUri, path, message, credentials, Logger); using (LogStreamWaitHandle logHandler = new LogStreamWaitHandle(manager.GetStream().Result)) { bool doStreaming = true; while (doStreaming) { string line = logHandler.WaitNextLine(waitInterval); if (line != null) { yield return(line); } doStreaming = endStreaming == null || endStreaming(line); } } }
/// <summary> /// Starts log streaming for the given website. /// </summary> /// <param name="name">The website name</param> /// <param name="path">The log path, by default root</param> /// <param name="message">The substring message</param> /// <param name="endStreaming">Predicate to end streaming</param> /// <param name="waitInterval">The fetch wait interval</param> /// <returns>The log line</returns> public IEnumerable<string> StartLogStreaming( string name, string path, string message, Predicate<string> endStreaming, int waitInterval) { Repository repository; ICredentials credentials; name = GetWebsiteDeploymentHttpConfiguration(name, out repository, out credentials); path = HttpUtility.UrlEncode(path); message = HttpUtility.UrlEncode(message); RemoteLogStreamManager manager = new RemoteLogStreamManager( repository.RepositoryUri, path, message, credentials, Logger); using (LogStreamWaitHandle logHandler = new LogStreamWaitHandle(manager.GetStream().Result)) { bool doStreaming = true; while (doStreaming) { string line = logHandler.WaitNextLine(waitInterval); if (line != null) { yield return line; } doStreaming = endStreaming == null || endStreaming(line); } } }