You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Slf4jStatementListener.java 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * Copyright 2011 James Moger.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.iciql.util;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import com.iciql.Iciql;
  22. import com.iciql.util.StatementLogger.StatementListener;
  23. import com.iciql.util.StatementLogger.StatementType;
  24. /**
  25. * Slf4jStatementListener interfaces the iciql statement logger to the SLF4J
  26. * logging architecture.
  27. *
  28. */
  29. public class Slf4jStatementListener implements StatementListener {
  30. private Logger logger = LoggerFactory.getLogger(Iciql.class);
  31. /**
  32. * Enumeration representing the SLF4J log levels.
  33. */
  34. public enum Level {
  35. ERROR, WARN, INFO, DEBUG, TRACE, OFF;
  36. }
  37. private final Level defaultLevel;
  38. private final Map<StatementType, Level> levels;
  39. public Slf4jStatementListener() {
  40. this(Level.TRACE);
  41. }
  42. public Slf4jStatementListener(Level defaultLevel) {
  43. this.defaultLevel = defaultLevel;
  44. levels = new HashMap<StatementType, Level>();
  45. for (StatementType type : StatementType.values()) {
  46. levels.put(type, defaultLevel);
  47. }
  48. }
  49. /**
  50. * Sets the logging level for a particular statement type.
  51. *
  52. * @param type
  53. * @param level
  54. */
  55. public void setLevel(StatementType type, Level level) {
  56. levels.put(type, defaultLevel);
  57. }
  58. @Override
  59. public void logStatement(StatementType type, String statement) {
  60. Level level = levels.get(type);
  61. switch (level) {
  62. case ERROR:
  63. logger.error(statement);
  64. break;
  65. case WARN:
  66. logger.warn(statement);
  67. break;
  68. case INFO:
  69. logger.info(statement);
  70. break;
  71. case DEBUG:
  72. logger.debug(statement);
  73. break;
  74. case TRACE:
  75. logger.trace(statement);
  76. break;
  77. case OFF:
  78. break;
  79. }
  80. }
  81. }