/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 *
 */
package org.eclipse.osbp.xtext.oxtype.scoping;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.inject.Singleton;

@Singleton
public class ScopingMetrics {

	static Logger LOGGER = LoggerFactory.getLogger(ScopingMetrics.class);

	public void cacheCreated(Object cacheKey) {
		LOGGER.info("Cache created for key " + cacheKey);
	}

	public void cacheHit(Object cacheKey, String name) {
		LOGGER.info("CacheHit for: " + name + " - in cache " + cacheKey);
	}
}
