我们应该何时以及如何编写应用程序日志以执行存储过程(Oracle DB)?



我想知道编写存储过程(应用程序(日志的经验规则/指导是什么。通常我们使用 2 种方法: 1( 使用UTL_FILE包将日志写入文件(每次运行单独的文件(。 2(使用Log4pl包将不同的日志(数字,错误,警告或致命(写入表中。 几乎对于每个过程,我们都使用上述 2 种方法,具体取决于我们正在编写的内容。就像致命错误一样,我们使用 Log4pl 和一些信息显示(例如记录其处理,我们将其写入文件(。 想知道其他组织如何维护日志?他们是也遵循 aboe 2 方法还是只使用一种方法?决定的依据是什么? 注意:我正在寻找仅用于应用程序编程而不是 Databse 的日志写入。 任何建议或博客链接都会很棒。谢谢。

另一种可以在Oracle应用程序中实现日志记录机制的方法- -> 斯普伦克

UTL_FILE并不能很好地扩展写入日志文件,例如

SQL> create table log_table (
2    s timestamp default systimestamp,
3    m varchar2(1000)
4    );
Table created.
SQL>
SQL> set timing on
SQL> begin
2    for i in 1 .. 10000 loop
3      insert into log_table (m) values ('My message');
4      commit;
5    end loop;
6  end;
7  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.62
SQL>
SQL> declare
2    f utl_file.file_type;
3  begin
4    f := utl_file.fopen('TMP','logfile.dat','W');
5    for i in 1 .. 10000 loop
6      utl_file.put_line(f,to_char(systimestamp)||' '||'My message');
7      utl_file.fflush(f);
8    end loop;
9    utl_file.fclose(f);
10  end;
11  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:30.58

现在您可能会想"我只会删除 utl_file.fflush(f( 调用",这确实会使其在与数据库表相当的时间内运行。 但是,您最需要该日志记录信息的时间是程序崩溃的时间 - 如果它崩溃并且您没有刷新,那么您将面临丢失最近的日志记录信息的风险,这对于了解程序崩溃的原因至关重要。

相关内容

  • 没有找到相关文章

最新更新