Я только что сделал что-то похожее на выходных.В итоге я просто создал 1 таблицу с именем «LogEvents» и использовал ключ провайдера для разделения различных типов событий и дат в журнале (например, ProviderKey = «20111121_LoginEvent», когда кто-то вошел в систему 21 ноября).
ДляПосле этого запросы можно легко выполнить по дате / типу и отобразить результат на странице администратора
Не уверен, что это лучший способ, но, похоже, он работает для меня.Я выполнил поиск в Google, но не смог найти ничего, что действительно сделало бы это.
Обновление 1: класс, который я использую, называется LogEvent:
public class LogEntry : TableServiceEntity
{
public LogEntry(string logType)
{
if (LogType == null || LogType.Length == 0)
{
if (logType.Length > 0)
LogType = logType;
else
LogType = "Default";
}
PartitionKey = string.Format("{0}_{1}", LogType, DateTime.UtcNow.ToString("yyyyMMdd"));
RowKey = string.Format("{0:10}_{1}", DateTime.MaxValue.Ticks - DateTime.Now.Ticks, Guid.NewGuid());
}
public LogEntry()
{
}
public string Message { get; set; }
public DateTime LogDateTime { get; set; }
public string LogType { get; set; }
}
Я просто создаю новый экземпляри установите свойства:
LogEntry le = new LogEntry("Default") { Message = "Default Page Loaded", LogDateTime=DateTime.Now };
LogEntryDataSource ds = new LogEntryDataSource();
ds.AddLogEntry(le);
Чтобы вернуть данные снова, я просто использую стандартный запрос Linq и передаю дату и LogType:
public IEnumerable<LogEntry> GetLogEntries(string eventType, DateTime logDate)
{
var results = from g in this.context.LogEntry
where g.PartitionKey == String.Format("{0}_{1}", eventType, logDate.ToString("yyyyMMdd"))
select g;
return results;
}
Возможно, естьлучший способ, но это было довольно просто настроить, и это работает для меня