logger.vwf.yaml 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. ---
  2. extends:
  3. http://vwf.example.com/node2.vwf
  4. properties:
  5. logger_logs:
  6. set: |
  7. //this.logger_logs = ( this.logger_logs === undefined ) ? value : this.logger_logs;
  8. this.logger_logs = value;
  9. value: []
  10. logger_maxLogs: 10
  11. logger_lifeTime:
  12. set: |
  13. if ( this.logger_lifeTime !== value ) {
  14. if ( value !== -1 ) {
  15. this.future( 0 ).updateLogs();
  16. }
  17. this.logger_lifeTime = value;
  18. }
  19. value: -1
  20. logger_frequency: 1
  21. logger_logFormat: undefined
  22. events:
  23. logRemoved:
  24. logAdded:
  25. methods:
  26. addLog:
  27. removeLog:
  28. updateLogs:
  29. scripts:
  30. - |
  31. this.initialize = function() {
  32. if ( this.logger_lifeTime !== -1 ) {
  33. this.future( 0 ).updateLogs();
  34. }
  35. }
  36. this.addLog = function( msg ){
  37. var logCopy = this.logger_logs.slice( 0 );
  38. while ( logCopy.length >= this.logger_maxLogs ) {
  39. logCopy.shift();
  40. this.logRemoved( 0 );
  41. }
  42. var newMsg = { "log": msg, "time": this.time };
  43. if ( this.logger_logFormat ) {
  44. var index = this.logger_logFormat.indexOf( '%s' );
  45. if ( index !== -1 ) {
  46. var str = this.logger_logFormat;
  47. newMsg.log = str.substr( 0, index ) + newMsg.log + str.substr( index + 2 );
  48. }
  49. }
  50. logCopy.push( newMsg );
  51. this.logger_logs = logCopy;
  52. this.logAdded( newMsg );
  53. }
  54. this.updateLogs = function() {
  55. if ( this.logger_lifeTime !== -1 ) {
  56. var logCopy = this.logger_logs.slice(0);
  57. var timeOk = false;
  58. var log;
  59. var logsToDelete = 0;
  60. for ( var i = 0; i < logCopy.length && !timeOk; i++ ) {
  61. log = logCopy[ i ];
  62. if ( this.time - log.time >= this.logger_lifeTime ) {
  63. logsToDelete++;
  64. } else {
  65. timeOk = true;
  66. }
  67. }
  68. if ( logsToDelete > 0 ) {
  69. for ( var i = 0; i <= logsToDelete; i++ ) {
  70. logCopy.shift();
  71. this.logRemoved( 0 );
  72. }
  73. this.logger_logs = logCopy;
  74. }
  75. this.future( this.logger_frequency ).updateLogs();
  76. }
  77. }
  78. //@ sourceURL=logger.vwf