/// <summary> /// Faz a inicialização do log. /// </summary> private static void inicializar() { // Carrega arquivo de configuração _config = GerenciadorConfig.ReceberConfig <LogConfig>(); if (_config == null) { _config = new LogConfig(); } // Verifica se a origem default está criada no event viewer if (_config.LogarEmEventViewer && !EventLog.SourceExists(_config.NomeOrigemLogDefault)) { EventLog.CreateEventSource(_config.NomeOrigemLogDefault, "Application"); } // Carrega as origens do tipo informado, caso exista if (_config.TipoComOrigensDeLog != null) { // Varre as constantes do tipo informado verificando a existencia do atributo de log foreach (FieldInfo member in _config.TipoComOrigensDeLog.GetFields()) { // Verifica existencia do atributo object[] attrs = member.GetCustomAttributes(typeof(LogOrigemAttribute), false); if (attrs.Length > 0) { // Pega o atributo LogOrigemAttribute attr = (LogOrigemAttribute)attrs[0]; // Pega valor da origem string origem = attr.Origem; // Pega a referencia para a origem string referenciaOrigem = (string) _config.TipoComOrigensDeLog.InvokeMember( member.Name, BindingFlags.GetField, null, null, (object[])null); // Se a origem não foi informada, utiliza a string da propria referencia if (origem == null) { origem = referenciaOrigem; } // Garante que a origem esteja criada no event viewer if (_config.LogarEmEventViewer && !EventLog.SourceExists(origem)) { EventLog.CreateEventSource(origem, "Application"); } // Adiciona no dicionário _dicionarioOrigens.Add(referenciaOrigem, origem); } } } // Sinaliza _inicializado = true; }
private void readCrontab() { ScheduleConfig _config = GerenciadorConfig.ReceberConfig <ScheduleConfig>(); try { foreach (ScheduleItem item in _config.ScheduleItem) { _cronlines.Add(item.value.Trim()); logger.Debug("Adding ScheduleItem [" + item.value.Trim() + "]"); } String line; foreach (string linha in _cronlines) { ArrayList minutes, hours, mDays, months, wDays; line = linha; if (line.Length == 0 || line.StartsWith("#")) { continue; } // re-escape space- and backslash-escapes in a cheap fashion line = line.Replace("\\\\", "<BACKSLASH>"); line = line.Replace("\\ ", "<SPACE>"); // split string on whitespace String[] cols = line.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < cols.Length; i++) { cols[i] = cols[i].Replace("<BACKSLASH>", "\\"); cols[i] = cols[i].Replace("<SPACE>", " "); } if (cols.Length < 6) { reportError("Parse error in crontab (line too short)."); crontab = new ArrayList(); } minutes = parseTimes(cols[0], 0, 59); hours = parseTimes(cols[1], 0, 23); months = parseTimes(cols[3], 1, 12); if (!cols[2].Equals("*") && cols[3].Equals("*")) { // every n monthdays, disregarding weekdays mDays = parseTimes(cols[2], 1, 31); wDays = new ArrayList(); wDays.Add(-1); // empty value } else if (cols[2].Equals("*") && !cols[3].Equals("*")) { // every n weekdays, disregarding monthdays mDays = new ArrayList(); mDays.Add(-1); // empty value wDays = parseTimes(cols[4], 1, 7); // 60 * 24 * 7 } else { // every n weekdays, every m monthdays mDays = parseTimes(cols[2], 1, 31); wDays = parseTimes(cols[4], 1, 7); // 60 * 24 * 7 } String args = ""; for (int i = 6; i < cols.Length; i++) { args += cols[i].Trim() + " "; } args = args.Trim(); // Prestar atencao aqui....inicializa com 6 ArrayList entry = new ArrayList(6); entry.Add(months); entry.Add(mDays); entry.Add(wDays); entry.Add(hours); entry.Add(minutes); entry.Add(cols[5]); entry.Add(args); crontab.Add(entry); logger.Info("Command [" + cols[5] + "] scheduled to run"); } } catch (Exception e) { reportError(e.ToString()); } }