<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maikolort</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maikolort"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Maikolort"/>
	<updated>2026-09-29T14:09:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs/es&amp;diff=950934</id>
		<title>J4.x:Joomla Core APIs/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs/es&amp;diff=950934"/>
		<updated>2022-08-14T05:49:58Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Se han creado una serie de recursos complementarios para introducir los Servicios Web de Joomla y ayudarte a aprender cómo implementar los Servicios Web en tu proyecto.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Esta página ofrece un listado de puntos de entrada (endpoints) disponibles en Joomla mediante ejemplos con comandos curl.&lt;br /&gt;
&lt;br /&gt;
Cada URL requiere autentificación a menos que sea una URL designada como pública. Por seguridad en Joomla 4.0.0 planeamos hacer que la API de aplicación predeterminada necesite de una cuenta de Súper Usuario (ya que la API de aplicación es algo nuevo), este requisito se irá relajando conforme la API se estabilice y se pruebe adecuadamente en la comunidad. Si estás usando el plugin de autentificación básica (actualmente el único plugin que se ofrece en Joomla 4 alpha 10) necesita que a los comandos curl siguientes le añadas los parámetros --user user_name:password&lt;br /&gt;
&lt;br /&gt;
Cada URL tiene que añadírsele la dirección del sitio Joomla antes de la ruta (es decir, en lugar de &amp;lt;tt&amp;gt;/api/index.php/v1/article&amp;lt;/tt&amp;gt; tienes que escribir &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://ejemplo.com/api/index.php/v1/article&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Algunos nombres de propiedades entre llaves ({}) indican que la propiedad es una variable que puede ser susituida.&lt;br /&gt;
&lt;br /&gt;
A menos que se indique expresamente, estas APIs se incluyeron en Joomla 4. Para más información sobre la especificación API de Joomla (y no de este listado de URLs y opciones) por favor visita la [[S:MyLanguage/Joomla Api Specification|Espacificación de la API de Joomla]]&lt;br /&gt;
&lt;br /&gt;
Cuando los puntos de entrada requieren el valor {app} la variable actualmente toma dos valores, site (front end), o administrator {back end)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Recursos útiles==&lt;br /&gt;
Se han creado una serie de recursos complementarios para introducir los Servicios Web de Joomla y ayudarte a aprender cómo implementar los Servicios Web en tu proyecto.&lt;br /&gt;
* [https://github.com/alexandreelise/j4x-api-collection Postman collection of Joomla Web Services API calls by Alexandre Elise]&lt;br /&gt;
* [https://www.youtube.com/watch?v=lT9qodsvfZg Youtube: Joomla 4 tutorial: Using the Web Services API with Eoin Oliver]&lt;br /&gt;
* [https://magazine.joomla.org/all-issues/august-2020/joomla-web-services-api-101-tokens,-testing-and-a-taste-test Joomla Community Magazine: Joomla Web Services API 101 by Patrick Jackson]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anuncios ==&lt;br /&gt;
=== Anuncios ===&lt;br /&gt;
==== Obtener la lista de anuncios ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners&lt;br /&gt;
==== Obtener un único anuncio ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
==== Borrar un anuncio ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
==== Crear un anuncio ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;clicks&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;custombannercode&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Text&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;height&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;imageurl&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;width&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un anuncio ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/{banner_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;New Text&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clientes ===&lt;br /&gt;
==== Obtener una lista de clientes ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients &lt;br /&gt;
&lt;br /&gt;
==== Obtener un único cliente ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un cliente ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un cliente ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;extrainfo&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un cliente ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients/{client_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;new Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;newemail@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
==== Obtener la lista de categorías ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories &lt;br /&gt;
&lt;br /&gt;
==== Obtener una única categoría ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una categoría ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una categoría ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;extension&amp;quot;: &amp;quot;com_banners&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una categoría ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories/{category_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Some Text&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Histórico del contenido ===&lt;br /&gt;
==== Obtener una lista histórica del contenido ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/contenthistory/{banner_id}&lt;br /&gt;
&lt;br /&gt;
==== Cambiar mantener la historia del contenido ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/contenthistory/keep/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar la historia del contenido ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/contenthistory/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
== Configuración ==&lt;br /&gt;
=== Aplicación ===&lt;br /&gt;
==== Get List of Application Configs ====&lt;br /&gt;
curl -X GET /api/index.php/v1/config/application&lt;br /&gt;
&lt;br /&gt;
==== Update Application Config ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Componente ===&lt;br /&gt;
==== Get List of Component Configs ====&lt;br /&gt;
curl -X GET /api/index.php/v1/config/{component_name}&lt;br /&gt;
&lt;br /&gt;
Example “component_name” is “com_content”.&lt;br /&gt;
&lt;br /&gt;
==== Update Application Config ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;link_titles&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contactos ==&lt;br /&gt;
=== Contact ===&lt;br /&gt;
==== Obtener una lista de contactos ====&lt;br /&gt;
curl -X GET /api/index.php/v1/contact&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único contacto ====&lt;br /&gt;
curl -X GET /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un contacto ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un contacto ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un contacto ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Enviar un formulario de contacto ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/form/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact_email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_message&amp;quot;: &amp;quot;some text&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_subject&amp;quot;: &amp;quot;subject&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Categorías ===&lt;br /&gt;
#Route Contact Categories is: &amp;quot;v1/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact ===&lt;br /&gt;
==== Get List of Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact&lt;br /&gt;
&lt;br /&gt;
==== Get Single Field Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Field Contact ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Field Contact ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Field Contact ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact/{field_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Some New Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact Mail ===&lt;br /&gt;
#Route Fields Contact Mail is: &amp;quot;v1/fields/contact/mail&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact Categories ===&lt;br /&gt;
#Route Fields Contact Categories is: &amp;quot;v1/fields/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Contact ===&lt;br /&gt;
==== Get List of Groups Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact&lt;br /&gt;
&lt;br /&gt;
==== Get Single Group Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Group Fields Contact ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Group Fields Contact ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field3&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== Update Group Fields Contact ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact/{group_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact group&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;new description&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group Fields Contact Mail ===&lt;br /&gt;
#Route Group Fields Contact Mail is: &amp;quot;v1/fields/groups/contact/mail&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Group Fields Contact Categories===&lt;br /&gt;
#Route Group Fields Contact Categories is: &amp;quot;v1/fields/groups/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Content History ===&lt;br /&gt;
#Route Content History is: &amp;quot;v1/contact/contenthistory&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
=== Articles ===&lt;br /&gt;
==== Get List of Articles ====&lt;br /&gt;
curl -X GET /api/index.php/v1/content/articles&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get Single Article ====&lt;br /&gt;
curl -X GET /api/index.php/v1/content/articles/{article_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Article ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/content/articles/{article_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Article ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/articles -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;my-article&amp;quot;,&lt;br /&gt;
    &amp;quot;articletext&amp;quot;: &amp;quot;My text&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Here&#039;s an article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently the options mentioned here are required properties. However the intention is currently to make AT LEAST metakey and metadesc optional in the API.&lt;br /&gt;
&lt;br /&gt;
==== Update Article ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/articles/{article_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Updated article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
#Route Content Categories is: &amp;quot;v1/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]], note if workflows is enabled then specifying a workflow is required (similarly to the UI)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fields Articles ===&lt;br /&gt;
#Route Fields Articles is: &amp;quot;v1/fields/content/articles&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Articles ===&lt;br /&gt;
#Route Groups Fields Articles is: &amp;quot;v1/fields/groups/content/articles&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Categories ===&lt;br /&gt;
#Route Fields Categories is: &amp;quot;v1/fields/groups/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Histórico del contenido ===&lt;br /&gt;
#Route Content History is: &amp;quot;v1/content/articles/{article_id}/contenthistory&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&lt;br /&gt;
&lt;br /&gt;
== Idiomas ==&lt;br /&gt;
=== Idiomas ===&lt;br /&gt;
==== Obtener la lista de idiomas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages&lt;br /&gt;
&lt;br /&gt;
==== Instalar un idioma====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;package&amp;quot;: &amp;quot;pkg_fr-FR&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Idiomas del contenido ===&lt;br /&gt;
==== Get List of Content Languages ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/content&lt;br /&gt;
&lt;br /&gt;
==== Get Single Content Language ====&lt;br /&gt;
curl -X GET /api/index.php/v1/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Content Language ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Language ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;: &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;fr-FR&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sef&amp;quot;: &amp;quot;fk&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;French (FR)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;Français (France)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Content Language ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content/{language_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;English (en-GB)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;English (United Kingdom)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overrides Languages ===&lt;br /&gt;
==== Get List of Overrides Languages Constants ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Override Language Constant ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Content Language ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Language ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Content Language ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;new text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var app - enum {&amp;quot;site&amp;quot;, &amp;quot;administrator&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
var lang_code - string Example: “fr-FR“, “en-GB“ you can get lang_code from v1/languages/content&lt;br /&gt;
&lt;br /&gt;
==== Search Override Constant ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;searchstring&amp;quot;: &amp;quot;JLIB_APPLICATION_ERROR_SAVE_FAILED&amp;quot;,&lt;br /&gt;
    &amp;quot;searchtype&amp;quot;: &amp;quot;constant&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var searchtype - enum {“constant”, “value”}. “constant” search by constant name, “value” - search by constant value&lt;br /&gt;
&lt;br /&gt;
==== Refresh Override Search Cache ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search/cache/refresh&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
=== Menus ===&lt;br /&gt;
==== Get List of Menus ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Menu ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Menu ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Menu ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;The menu for the site&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Menu ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/{menu_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menus Items ===&lt;br /&gt;
==== Get List of Menus Items Types ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/types&lt;br /&gt;
&lt;br /&gt;
==== Get List of Menus Items ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items&lt;br /&gt;
&lt;br /&gt;
==== Get Single Menu Item ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Menu Item ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Menu Item ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;associations&amp;quot;: {&lt;br /&gt;
        &amp;quot;en-GB&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;fr-FR&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;browserNav&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;cancel_redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;catid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;custom_cancel_redirect&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;enable_category&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_keywords&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_show&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_text&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;page_heading&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;page_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;pageclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_page_heading&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;template_style_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_assigned&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for &amp;quot;Create Article Page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Update Menu Item ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items/{menu_item_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for &amp;quot;Create Article Page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Mensajes ==&lt;br /&gt;
=== Mensajes ===&lt;br /&gt;
==== Obtener la lista de mensajes ====&lt;br /&gt;
curl -X GET /api/index.php/v1/messages&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único mensaje ====&lt;br /&gt;
curl -X GET /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un mensaje ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un mensaje ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un mensaje ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages/{message_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;new text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;new text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Módulos ==&lt;br /&gt;
=== Módulos ===&lt;br /&gt;
==== Get List of Modules Types ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/types/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get List of Modules ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Module ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Module ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un módulo ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;assigned&amp;quot;: [&lt;br /&gt;
        &amp;quot;101&amp;quot;,&lt;br /&gt;
        &amp;quot;105&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;assignment&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;bootstrap_size&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;cache&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;cache_time&amp;quot;: &amp;quot;900&amp;quot;,&lt;br /&gt;
        &amp;quot;cachemode&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
        &amp;quot;count&amp;quot;: &amp;quot;10&amp;quot;,&lt;br /&gt;
        &amp;quot;header_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;header_tag&amp;quot;: &amp;quot;h3&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;_:default&amp;quot;,&lt;br /&gt;
        &amp;quot;module_tag&amp;quot;: &amp;quot;div&amp;quot;,&lt;br /&gt;
        &amp;quot;moduleclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;style&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;position&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;showtitle&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo para &amp;quot;Artículos - Archivados&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un módulo ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app}/{module_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Canales de noticias ==&lt;br /&gt;
=== Canales ===&lt;br /&gt;
==== Obtener una lista de canales ====&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds&lt;br /&gt;
&lt;br /&gt;
==== Get Single Feed ====&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Feed ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Feed ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;alias&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;images&amp;quot;: {&lt;br /&gt;
        &amp;quot;float_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;float_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_caption&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;hits&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;rights&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;tags&amp;quot;: {&lt;br /&gt;
            &amp;quot;tags&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;typeAlias&amp;quot;: null&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;feed_character_count&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;feed_display_order&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;newsfeed_layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_item_description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Feed ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds/{feed_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test2&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Categorías ===&lt;br /&gt;
#Route Newsfeeds Categories is: &amp;quot;v1/newsfeeds/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
== Privacidad ==&lt;br /&gt;
=== Petición ===&lt;br /&gt;
==== Obtener una lista de peticiones ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única petición ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/{request_id}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Request Export Data ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/export/{request_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una petición ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/privacy/request -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;:&amp;quot;somenewemail@com.ua&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;export&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Consentimiento ===&lt;br /&gt;
==== Obtener la lista de consentimientos ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único consentimiento ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un consentimiento ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
=== Redirección ===&lt;br /&gt;
==== Obtener una lista de redirecciones ====&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única redirección ====&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una redirección ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una redirección ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;header&amp;quot;: 301,&lt;br /&gt;
    &amp;quot;hits&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/99&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/12&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;referer&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una redirección ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect/{redirect_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/4&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/132&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Etiquetas ==&lt;br /&gt;
=== Etiquetas ===&lt;br /&gt;
==== Obtener la lista de etiquetas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/tags&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única etiqueta ====&lt;br /&gt;
curl -X GET /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una etiqueta ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una etiqueta ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;access_title&amp;quot;: &amp;quot;Public&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una etiqueta ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags/{tag_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plantillas ==&lt;br /&gt;
=== Estilos de las plantillas ===&lt;br /&gt;
==== Obtener la lista de los estilos de plantillas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único estilo de plantilla ====&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un estilo de la plantilla ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un estilo de la plantilla ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;fluidContainer&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;logoFile&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarLeftWidth&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarRightWidth&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;cassiopeia - Some Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un estilo de la plantilla ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app}/{template_style_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
	&amp;quot;title&amp;quot;: &amp;quot;new cassiopeia - Default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usuarios ==&lt;br /&gt;
=== Usuarios ===&lt;br /&gt;
==== Obtener una lista de usuarios ====&lt;br /&gt;
curl -X GET /api/index.php/v1/users&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único usuario ====&lt;br /&gt;
curl -X GET /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un usuario ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un usuario ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;block&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;test@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;lastResetTime&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastvisitDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;nnn&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;admin_language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_style&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;editor&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;helpsite&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;timezone&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;qwertyqwerty123&amp;quot;,&lt;br /&gt;
    &amp;quot;password2&amp;quot;: &amp;quot;qwertyqwerty123&amp;quot;,&lt;br /&gt;
    &amp;quot;registerDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;requireReset&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;resetCount&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;sendEmail&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;ad&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un usuario ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users/{user_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;new@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;username&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Campos de usuarios ===&lt;br /&gt;
#Route Fields Users is: &amp;quot;v1/fields/users&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/J4.x:Joomla_Core_APIs#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Users ===&lt;br /&gt;
#Route Groups Fields Users is: &amp;quot;v1/fields/groups/users&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/J4.x:Joomla_Core_APIs#Groups_Fields_Contact|Groups Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x Web Services{{#translation:}}]]&lt;br /&gt;
[[Category:Needs review]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Joomla_Core_APIs/202/es&amp;diff=950933</id>
		<title>Translations:J4.x:Joomla Core APIs/202/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Joomla_Core_APIs/202/es&amp;diff=950933"/>
		<updated>2022-08-14T05:49:49Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Se han creado una serie de recursos complementarios para introducir los Servicios Web de Joomla y ayudarte a aprender cómo implementar los Servicios Web en tu proyecto.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se han creado una serie de recursos complementarios para introducir los Servicios Web de Joomla y ayudarte a aprender cómo implementar los Servicios Web en tu proyecto.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs/es&amp;diff=950932</id>
		<title>J4.x:Joomla Core APIs/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs/es&amp;diff=950932"/>
		<updated>2022-08-14T05:49:00Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Recursos útiles&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Esta página ofrece un listado de puntos de entrada (endpoints) disponibles en Joomla mediante ejemplos con comandos curl.&lt;br /&gt;
&lt;br /&gt;
Cada URL requiere autentificación a menos que sea una URL designada como pública. Por seguridad en Joomla 4.0.0 planeamos hacer que la API de aplicación predeterminada necesite de una cuenta de Súper Usuario (ya que la API de aplicación es algo nuevo), este requisito se irá relajando conforme la API se estabilice y se pruebe adecuadamente en la comunidad. Si estás usando el plugin de autentificación básica (actualmente el único plugin que se ofrece en Joomla 4 alpha 10) necesita que a los comandos curl siguientes le añadas los parámetros --user user_name:password&lt;br /&gt;
&lt;br /&gt;
Cada URL tiene que añadírsele la dirección del sitio Joomla antes de la ruta (es decir, en lugar de &amp;lt;tt&amp;gt;/api/index.php/v1/article&amp;lt;/tt&amp;gt; tienes que escribir &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://ejemplo.com/api/index.php/v1/article&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Algunos nombres de propiedades entre llaves ({}) indican que la propiedad es una variable que puede ser susituida.&lt;br /&gt;
&lt;br /&gt;
A menos que se indique expresamente, estas APIs se incluyeron en Joomla 4. Para más información sobre la especificación API de Joomla (y no de este listado de URLs y opciones) por favor visita la [[S:MyLanguage/Joomla Api Specification|Espacificación de la API de Joomla]]&lt;br /&gt;
&lt;br /&gt;
Cuando los puntos de entrada requieren el valor {app} la variable actualmente toma dos valores, site (front end), o administrator {back end)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Recursos útiles==&lt;br /&gt;
A number of complimentary resources have been created to introduce Joomla Web Services and assist you with learning how to implement Web Services on your project.&lt;br /&gt;
* [https://github.com/alexandreelise/j4x-api-collection Postman collection of Joomla Web Services API calls by Alexandre Elise]&lt;br /&gt;
* [https://www.youtube.com/watch?v=lT9qodsvfZg Youtube: Joomla 4 tutorial: Using the Web Services API with Eoin Oliver]&lt;br /&gt;
* [https://magazine.joomla.org/all-issues/august-2020/joomla-web-services-api-101-tokens,-testing-and-a-taste-test Joomla Community Magazine: Joomla Web Services API 101 by Patrick Jackson]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anuncios ==&lt;br /&gt;
=== Anuncios ===&lt;br /&gt;
==== Obtener la lista de anuncios ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners&lt;br /&gt;
==== Obtener un único anuncio ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
==== Borrar un anuncio ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
==== Crear un anuncio ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;clicks&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;custombannercode&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Text&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;height&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;imageurl&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;width&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un anuncio ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/{banner_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;New Text&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clientes ===&lt;br /&gt;
==== Obtener una lista de clientes ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients &lt;br /&gt;
&lt;br /&gt;
==== Obtener un único cliente ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un cliente ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un cliente ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;extrainfo&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un cliente ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients/{client_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;new Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;newemail@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
==== Obtener la lista de categorías ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories &lt;br /&gt;
&lt;br /&gt;
==== Obtener una única categoría ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una categoría ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una categoría ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;extension&amp;quot;: &amp;quot;com_banners&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una categoría ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories/{category_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Some Text&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Histórico del contenido ===&lt;br /&gt;
==== Obtener una lista histórica del contenido ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/contenthistory/{banner_id}&lt;br /&gt;
&lt;br /&gt;
==== Cambiar mantener la historia del contenido ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/contenthistory/keep/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar la historia del contenido ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/contenthistory/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
== Configuración ==&lt;br /&gt;
=== Aplicación ===&lt;br /&gt;
==== Get List of Application Configs ====&lt;br /&gt;
curl -X GET /api/index.php/v1/config/application&lt;br /&gt;
&lt;br /&gt;
==== Update Application Config ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Componente ===&lt;br /&gt;
==== Get List of Component Configs ====&lt;br /&gt;
curl -X GET /api/index.php/v1/config/{component_name}&lt;br /&gt;
&lt;br /&gt;
Example “component_name” is “com_content”.&lt;br /&gt;
&lt;br /&gt;
==== Update Application Config ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;link_titles&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contactos ==&lt;br /&gt;
=== Contact ===&lt;br /&gt;
==== Obtener una lista de contactos ====&lt;br /&gt;
curl -X GET /api/index.php/v1/contact&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único contacto ====&lt;br /&gt;
curl -X GET /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un contacto ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un contacto ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un contacto ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Enviar un formulario de contacto ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/form/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact_email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_message&amp;quot;: &amp;quot;some text&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_subject&amp;quot;: &amp;quot;subject&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Categorías ===&lt;br /&gt;
#Route Contact Categories is: &amp;quot;v1/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact ===&lt;br /&gt;
==== Get List of Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact&lt;br /&gt;
&lt;br /&gt;
==== Get Single Field Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Field Contact ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Field Contact ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Field Contact ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact/{field_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Some New Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact Mail ===&lt;br /&gt;
#Route Fields Contact Mail is: &amp;quot;v1/fields/contact/mail&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact Categories ===&lt;br /&gt;
#Route Fields Contact Categories is: &amp;quot;v1/fields/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Contact ===&lt;br /&gt;
==== Get List of Groups Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact&lt;br /&gt;
&lt;br /&gt;
==== Get Single Group Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Group Fields Contact ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Group Fields Contact ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field3&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== Update Group Fields Contact ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact/{group_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact group&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;new description&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group Fields Contact Mail ===&lt;br /&gt;
#Route Group Fields Contact Mail is: &amp;quot;v1/fields/groups/contact/mail&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Group Fields Contact Categories===&lt;br /&gt;
#Route Group Fields Contact Categories is: &amp;quot;v1/fields/groups/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Content History ===&lt;br /&gt;
#Route Content History is: &amp;quot;v1/contact/contenthistory&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
=== Articles ===&lt;br /&gt;
==== Get List of Articles ====&lt;br /&gt;
curl -X GET /api/index.php/v1/content/articles&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get Single Article ====&lt;br /&gt;
curl -X GET /api/index.php/v1/content/articles/{article_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Article ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/content/articles/{article_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Article ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/articles -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;my-article&amp;quot;,&lt;br /&gt;
    &amp;quot;articletext&amp;quot;: &amp;quot;My text&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Here&#039;s an article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently the options mentioned here are required properties. However the intention is currently to make AT LEAST metakey and metadesc optional in the API.&lt;br /&gt;
&lt;br /&gt;
==== Update Article ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/articles/{article_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Updated article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
#Route Content Categories is: &amp;quot;v1/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]], note if workflows is enabled then specifying a workflow is required (similarly to the UI)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fields Articles ===&lt;br /&gt;
#Route Fields Articles is: &amp;quot;v1/fields/content/articles&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Articles ===&lt;br /&gt;
#Route Groups Fields Articles is: &amp;quot;v1/fields/groups/content/articles&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Categories ===&lt;br /&gt;
#Route Fields Categories is: &amp;quot;v1/fields/groups/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Histórico del contenido ===&lt;br /&gt;
#Route Content History is: &amp;quot;v1/content/articles/{article_id}/contenthistory&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&lt;br /&gt;
&lt;br /&gt;
== Idiomas ==&lt;br /&gt;
=== Idiomas ===&lt;br /&gt;
==== Obtener la lista de idiomas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages&lt;br /&gt;
&lt;br /&gt;
==== Instalar un idioma====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;package&amp;quot;: &amp;quot;pkg_fr-FR&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Idiomas del contenido ===&lt;br /&gt;
==== Get List of Content Languages ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/content&lt;br /&gt;
&lt;br /&gt;
==== Get Single Content Language ====&lt;br /&gt;
curl -X GET /api/index.php/v1/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Content Language ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Language ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;: &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;fr-FR&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sef&amp;quot;: &amp;quot;fk&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;French (FR)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;Français (France)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Content Language ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content/{language_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;English (en-GB)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;English (United Kingdom)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overrides Languages ===&lt;br /&gt;
==== Get List of Overrides Languages Constants ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Override Language Constant ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Content Language ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Language ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Content Language ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;new text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var app - enum {&amp;quot;site&amp;quot;, &amp;quot;administrator&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
var lang_code - string Example: “fr-FR“, “en-GB“ you can get lang_code from v1/languages/content&lt;br /&gt;
&lt;br /&gt;
==== Search Override Constant ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;searchstring&amp;quot;: &amp;quot;JLIB_APPLICATION_ERROR_SAVE_FAILED&amp;quot;,&lt;br /&gt;
    &amp;quot;searchtype&amp;quot;: &amp;quot;constant&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var searchtype - enum {“constant”, “value”}. “constant” search by constant name, “value” - search by constant value&lt;br /&gt;
&lt;br /&gt;
==== Refresh Override Search Cache ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search/cache/refresh&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
=== Menus ===&lt;br /&gt;
==== Get List of Menus ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Menu ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Menu ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Menu ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;The menu for the site&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Menu ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/{menu_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menus Items ===&lt;br /&gt;
==== Get List of Menus Items Types ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/types&lt;br /&gt;
&lt;br /&gt;
==== Get List of Menus Items ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items&lt;br /&gt;
&lt;br /&gt;
==== Get Single Menu Item ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Menu Item ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Menu Item ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;associations&amp;quot;: {&lt;br /&gt;
        &amp;quot;en-GB&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;fr-FR&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;browserNav&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;cancel_redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;catid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;custom_cancel_redirect&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;enable_category&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_keywords&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_show&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_text&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;page_heading&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;page_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;pageclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_page_heading&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;template_style_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_assigned&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for &amp;quot;Create Article Page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Update Menu Item ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items/{menu_item_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for &amp;quot;Create Article Page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Mensajes ==&lt;br /&gt;
=== Mensajes ===&lt;br /&gt;
==== Obtener la lista de mensajes ====&lt;br /&gt;
curl -X GET /api/index.php/v1/messages&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único mensaje ====&lt;br /&gt;
curl -X GET /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un mensaje ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un mensaje ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un mensaje ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages/{message_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;new text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;new text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Módulos ==&lt;br /&gt;
=== Módulos ===&lt;br /&gt;
==== Get List of Modules Types ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/types/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get List of Modules ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Module ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Module ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un módulo ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;assigned&amp;quot;: [&lt;br /&gt;
        &amp;quot;101&amp;quot;,&lt;br /&gt;
        &amp;quot;105&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;assignment&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;bootstrap_size&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;cache&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;cache_time&amp;quot;: &amp;quot;900&amp;quot;,&lt;br /&gt;
        &amp;quot;cachemode&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
        &amp;quot;count&amp;quot;: &amp;quot;10&amp;quot;,&lt;br /&gt;
        &amp;quot;header_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;header_tag&amp;quot;: &amp;quot;h3&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;_:default&amp;quot;,&lt;br /&gt;
        &amp;quot;module_tag&amp;quot;: &amp;quot;div&amp;quot;,&lt;br /&gt;
        &amp;quot;moduleclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;style&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;position&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;showtitle&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo para &amp;quot;Artículos - Archivados&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un módulo ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app}/{module_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Canales de noticias ==&lt;br /&gt;
=== Canales ===&lt;br /&gt;
==== Obtener una lista de canales ====&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds&lt;br /&gt;
&lt;br /&gt;
==== Get Single Feed ====&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Feed ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Feed ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;alias&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;images&amp;quot;: {&lt;br /&gt;
        &amp;quot;float_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;float_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_caption&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;hits&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;rights&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;tags&amp;quot;: {&lt;br /&gt;
            &amp;quot;tags&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;typeAlias&amp;quot;: null&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;feed_character_count&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;feed_display_order&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;newsfeed_layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_item_description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Feed ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds/{feed_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test2&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Categorías ===&lt;br /&gt;
#Route Newsfeeds Categories is: &amp;quot;v1/newsfeeds/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
== Privacidad ==&lt;br /&gt;
=== Petición ===&lt;br /&gt;
==== Obtener una lista de peticiones ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única petición ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/{request_id}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Request Export Data ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/export/{request_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una petición ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/privacy/request -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;:&amp;quot;somenewemail@com.ua&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;export&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Consentimiento ===&lt;br /&gt;
==== Obtener la lista de consentimientos ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único consentimiento ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un consentimiento ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
=== Redirección ===&lt;br /&gt;
==== Obtener una lista de redirecciones ====&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única redirección ====&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una redirección ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una redirección ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;header&amp;quot;: 301,&lt;br /&gt;
    &amp;quot;hits&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/99&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/12&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;referer&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una redirección ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect/{redirect_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/4&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/132&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Etiquetas ==&lt;br /&gt;
=== Etiquetas ===&lt;br /&gt;
==== Obtener la lista de etiquetas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/tags&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única etiqueta ====&lt;br /&gt;
curl -X GET /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una etiqueta ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una etiqueta ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;access_title&amp;quot;: &amp;quot;Public&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una etiqueta ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags/{tag_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plantillas ==&lt;br /&gt;
=== Estilos de las plantillas ===&lt;br /&gt;
==== Obtener la lista de los estilos de plantillas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único estilo de plantilla ====&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un estilo de la plantilla ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un estilo de la plantilla ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;fluidContainer&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;logoFile&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarLeftWidth&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarRightWidth&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;cassiopeia - Some Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un estilo de la plantilla ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app}/{template_style_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
	&amp;quot;title&amp;quot;: &amp;quot;new cassiopeia - Default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usuarios ==&lt;br /&gt;
=== Usuarios ===&lt;br /&gt;
==== Obtener una lista de usuarios ====&lt;br /&gt;
curl -X GET /api/index.php/v1/users&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único usuario ====&lt;br /&gt;
curl -X GET /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un usuario ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un usuario ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;block&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;test@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;lastResetTime&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastvisitDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;nnn&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;admin_language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_style&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;editor&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;helpsite&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;timezone&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;qwertyqwerty123&amp;quot;,&lt;br /&gt;
    &amp;quot;password2&amp;quot;: &amp;quot;qwertyqwerty123&amp;quot;,&lt;br /&gt;
    &amp;quot;registerDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;requireReset&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;resetCount&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;sendEmail&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;ad&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un usuario ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users/{user_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;new@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;username&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Campos de usuarios ===&lt;br /&gt;
#Route Fields Users is: &amp;quot;v1/fields/users&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/J4.x:Joomla_Core_APIs#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Users ===&lt;br /&gt;
#Route Groups Fields Users is: &amp;quot;v1/fields/groups/users&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/J4.x:Joomla_Core_APIs#Groups_Fields_Contact|Groups Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x Web Services{{#translation:}}]]&lt;br /&gt;
[[Category:Needs review]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Joomla_Core_APIs/201/es&amp;diff=950931</id>
		<title>Translations:J4.x:Joomla Core APIs/201/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Joomla_Core_APIs/201/es&amp;diff=950931"/>
		<updated>2022-08-14T05:48:54Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Recursos útiles&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Recursos útiles&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs/es&amp;diff=950930</id>
		<title>J4.x:Joomla Core APIs/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs/es&amp;diff=950930"/>
		<updated>2022-08-14T05:48:30Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Cuando los puntos de entrada requieren el valor {app} la variable actualmente toma dos valores, site (front end), o administrator {back end)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Esta página ofrece un listado de puntos de entrada (endpoints) disponibles en Joomla mediante ejemplos con comandos curl.&lt;br /&gt;
&lt;br /&gt;
Cada URL requiere autentificación a menos que sea una URL designada como pública. Por seguridad en Joomla 4.0.0 planeamos hacer que la API de aplicación predeterminada necesite de una cuenta de Súper Usuario (ya que la API de aplicación es algo nuevo), este requisito se irá relajando conforme la API se estabilice y se pruebe adecuadamente en la comunidad. Si estás usando el plugin de autentificación básica (actualmente el único plugin que se ofrece en Joomla 4 alpha 10) necesita que a los comandos curl siguientes le añadas los parámetros --user user_name:password&lt;br /&gt;
&lt;br /&gt;
Cada URL tiene que añadírsele la dirección del sitio Joomla antes de la ruta (es decir, en lugar de &amp;lt;tt&amp;gt;/api/index.php/v1/article&amp;lt;/tt&amp;gt; tienes que escribir &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://ejemplo.com/api/index.php/v1/article&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Algunos nombres de propiedades entre llaves ({}) indican que la propiedad es una variable que puede ser susituida.&lt;br /&gt;
&lt;br /&gt;
A menos que se indique expresamente, estas APIs se incluyeron en Joomla 4. Para más información sobre la especificación API de Joomla (y no de este listado de URLs y opciones) por favor visita la [[S:MyLanguage/Joomla Api Specification|Espacificación de la API de Joomla]]&lt;br /&gt;
&lt;br /&gt;
Cuando los puntos de entrada requieren el valor {app} la variable actualmente toma dos valores, site (front end), o administrator {back end)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful Resources==&lt;br /&gt;
A number of complimentary resources have been created to introduce Joomla Web Services and assist you with learning how to implement Web Services on your project.&lt;br /&gt;
* [https://github.com/alexandreelise/j4x-api-collection Postman collection of Joomla Web Services API calls by Alexandre Elise]&lt;br /&gt;
* [https://www.youtube.com/watch?v=lT9qodsvfZg Youtube: Joomla 4 tutorial: Using the Web Services API with Eoin Oliver]&lt;br /&gt;
* [https://magazine.joomla.org/all-issues/august-2020/joomla-web-services-api-101-tokens,-testing-and-a-taste-test Joomla Community Magazine: Joomla Web Services API 101 by Patrick Jackson]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anuncios ==&lt;br /&gt;
=== Anuncios ===&lt;br /&gt;
==== Obtener la lista de anuncios ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners&lt;br /&gt;
==== Obtener un único anuncio ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
==== Borrar un anuncio ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
==== Crear un anuncio ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;clicks&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;custombannercode&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Text&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;height&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;imageurl&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;width&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un anuncio ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/{banner_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;New Text&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clientes ===&lt;br /&gt;
==== Obtener una lista de clientes ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients &lt;br /&gt;
&lt;br /&gt;
==== Obtener un único cliente ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un cliente ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un cliente ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;extrainfo&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un cliente ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients/{client_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;new Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;newemail@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
==== Obtener la lista de categorías ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories &lt;br /&gt;
&lt;br /&gt;
==== Obtener una única categoría ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una categoría ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una categoría ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;extension&amp;quot;: &amp;quot;com_banners&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una categoría ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories/{category_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Some Text&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Histórico del contenido ===&lt;br /&gt;
==== Obtener una lista histórica del contenido ====&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/contenthistory/{banner_id}&lt;br /&gt;
&lt;br /&gt;
==== Cambiar mantener la historia del contenido ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/contenthistory/keep/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar la historia del contenido ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/contenthistory/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
== Configuración ==&lt;br /&gt;
=== Aplicación ===&lt;br /&gt;
==== Get List of Application Configs ====&lt;br /&gt;
curl -X GET /api/index.php/v1/config/application&lt;br /&gt;
&lt;br /&gt;
==== Update Application Config ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Componente ===&lt;br /&gt;
==== Get List of Component Configs ====&lt;br /&gt;
curl -X GET /api/index.php/v1/config/{component_name}&lt;br /&gt;
&lt;br /&gt;
Example “component_name” is “com_content”.&lt;br /&gt;
&lt;br /&gt;
==== Update Application Config ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;link_titles&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contactos ==&lt;br /&gt;
=== Contact ===&lt;br /&gt;
==== Obtener una lista de contactos ====&lt;br /&gt;
curl -X GET /api/index.php/v1/contact&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único contacto ====&lt;br /&gt;
curl -X GET /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un contacto ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un contacto ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un contacto ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Enviar un formulario de contacto ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/form/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact_email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_message&amp;quot;: &amp;quot;some text&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_subject&amp;quot;: &amp;quot;subject&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Categorías ===&lt;br /&gt;
#Route Contact Categories is: &amp;quot;v1/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact ===&lt;br /&gt;
==== Get List of Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact&lt;br /&gt;
&lt;br /&gt;
==== Get Single Field Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Field Contact ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Field Contact ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Field Contact ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact/{field_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Some New Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact Mail ===&lt;br /&gt;
#Route Fields Contact Mail is: &amp;quot;v1/fields/contact/mail&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Contact Categories ===&lt;br /&gt;
#Route Fields Contact Categories is: &amp;quot;v1/fields/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Contact ===&lt;br /&gt;
==== Get List of Groups Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact&lt;br /&gt;
&lt;br /&gt;
==== Get Single Group Fields Contact ====&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Group Fields Contact ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Group Fields Contact ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field3&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== Update Group Fields Contact ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact/{group_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact group&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;new description&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group Fields Contact Mail ===&lt;br /&gt;
#Route Group Fields Contact Mail is: &amp;quot;v1/fields/groups/contact/mail&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Group Fields Contact Categories===&lt;br /&gt;
#Route Group Fields Contact Categories is: &amp;quot;v1/fields/groups/contact/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Content History ===&lt;br /&gt;
#Route Content History is: &amp;quot;v1/contact/contenthistory&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
=== Articles ===&lt;br /&gt;
==== Get List of Articles ====&lt;br /&gt;
curl -X GET /api/index.php/v1/content/articles&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get Single Article ====&lt;br /&gt;
curl -X GET /api/index.php/v1/content/articles/{article_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Article ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/content/articles/{article_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Article ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/articles -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;my-article&amp;quot;,&lt;br /&gt;
    &amp;quot;articletext&amp;quot;: &amp;quot;My text&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Here&#039;s an article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently the options mentioned here are required properties. However the intention is currently to make AT LEAST metakey and metadesc optional in the API.&lt;br /&gt;
&lt;br /&gt;
==== Update Article ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/articles/{article_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Updated article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
#Route Content Categories is: &amp;quot;v1/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]], note if workflows is enabled then specifying a workflow is required (similarly to the UI)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fields Articles ===&lt;br /&gt;
#Route Fields Articles is: &amp;quot;v1/fields/content/articles&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Articles ===&lt;br /&gt;
#Route Groups Fields Articles is: &amp;quot;v1/fields/groups/content/articles&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Fields Categories ===&lt;br /&gt;
#Route Fields Categories is: &amp;quot;v1/fields/groups/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
=== Histórico del contenido ===&lt;br /&gt;
#Route Content History is: &amp;quot;v1/content/articles/{article_id}/contenthistory&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&lt;br /&gt;
&lt;br /&gt;
== Idiomas ==&lt;br /&gt;
=== Idiomas ===&lt;br /&gt;
==== Obtener la lista de idiomas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages&lt;br /&gt;
&lt;br /&gt;
==== Instalar un idioma====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;package&amp;quot;: &amp;quot;pkg_fr-FR&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Idiomas del contenido ===&lt;br /&gt;
==== Get List of Content Languages ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/content&lt;br /&gt;
&lt;br /&gt;
==== Get Single Content Language ====&lt;br /&gt;
curl -X GET /api/index.php/v1/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Content Language ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Language ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;: &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;fr-FR&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sef&amp;quot;: &amp;quot;fk&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;French (FR)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;Français (France)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Content Language ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content/{language_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;English (en-GB)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;English (United Kingdom)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overrides Languages ===&lt;br /&gt;
==== Get List of Overrides Languages Constants ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Override Language Constant ====&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Content Language ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Language ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Content Language ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;new text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var app - enum {&amp;quot;site&amp;quot;, &amp;quot;administrator&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
var lang_code - string Example: “fr-FR“, “en-GB“ you can get lang_code from v1/languages/content&lt;br /&gt;
&lt;br /&gt;
==== Search Override Constant ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;searchstring&amp;quot;: &amp;quot;JLIB_APPLICATION_ERROR_SAVE_FAILED&amp;quot;,&lt;br /&gt;
    &amp;quot;searchtype&amp;quot;: &amp;quot;constant&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var searchtype - enum {“constant”, “value”}. “constant” search by constant name, “value” - search by constant value&lt;br /&gt;
&lt;br /&gt;
==== Refresh Override Search Cache ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search/cache/refresh&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
=== Menus ===&lt;br /&gt;
==== Get List of Menus ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Menu ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Menu ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Menu ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;The menu for the site&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Menu ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/{menu_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menus Items ===&lt;br /&gt;
==== Get List of Menus Items Types ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/types&lt;br /&gt;
&lt;br /&gt;
==== Get List of Menus Items ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items&lt;br /&gt;
&lt;br /&gt;
==== Get Single Menu Item ====&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Menu Item ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Menu Item ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;associations&amp;quot;: {&lt;br /&gt;
        &amp;quot;en-GB&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;fr-FR&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;browserNav&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;cancel_redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;catid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;custom_cancel_redirect&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;enable_category&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_keywords&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_show&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_text&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;page_heading&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;page_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;pageclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_page_heading&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;template_style_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_assigned&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for &amp;quot;Create Article Page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Update Menu Item ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items/{menu_item_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for &amp;quot;Create Article Page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Mensajes ==&lt;br /&gt;
=== Mensajes ===&lt;br /&gt;
==== Obtener la lista de mensajes ====&lt;br /&gt;
curl -X GET /api/index.php/v1/messages&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único mensaje ====&lt;br /&gt;
curl -X GET /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un mensaje ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un mensaje ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un mensaje ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages/{message_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;new text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;new text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Módulos ==&lt;br /&gt;
=== Módulos ===&lt;br /&gt;
==== Get List of Modules Types ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/types/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get List of Modules ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Module ====&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Module ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un módulo ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;assigned&amp;quot;: [&lt;br /&gt;
        &amp;quot;101&amp;quot;,&lt;br /&gt;
        &amp;quot;105&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;assignment&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;bootstrap_size&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;cache&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;cache_time&amp;quot;: &amp;quot;900&amp;quot;,&lt;br /&gt;
        &amp;quot;cachemode&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
        &amp;quot;count&amp;quot;: &amp;quot;10&amp;quot;,&lt;br /&gt;
        &amp;quot;header_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;header_tag&amp;quot;: &amp;quot;h3&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;_:default&amp;quot;,&lt;br /&gt;
        &amp;quot;module_tag&amp;quot;: &amp;quot;div&amp;quot;,&lt;br /&gt;
        &amp;quot;moduleclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;style&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;position&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;showtitle&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo para &amp;quot;Artículos - Archivados&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un módulo ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app}/{module_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Canales de noticias ==&lt;br /&gt;
=== Canales ===&lt;br /&gt;
==== Obtener una lista de canales ====&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds&lt;br /&gt;
&lt;br /&gt;
==== Get Single Feed ====&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
==== Delete Feed ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
==== Create Feed ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;alias&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;images&amp;quot;: {&lt;br /&gt;
        &amp;quot;float_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;float_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_caption&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;hits&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;rights&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;tags&amp;quot;: {&lt;br /&gt;
            &amp;quot;tags&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;typeAlias&amp;quot;: null&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;feed_character_count&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;feed_display_order&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;newsfeed_layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_item_description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update Feed ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds/{feed_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test2&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Categorías ===&lt;br /&gt;
#Route Newsfeeds Categories is: &amp;quot;v1/newsfeeds/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
== Privacidad ==&lt;br /&gt;
=== Petición ===&lt;br /&gt;
==== Obtener una lista de peticiones ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única petición ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/{request_id}&lt;br /&gt;
&lt;br /&gt;
==== Get Single Request Export Data ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/export/{request_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una petición ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/privacy/request -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;:&amp;quot;somenewemail@com.ua&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;export&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Consentimiento ===&lt;br /&gt;
==== Obtener la lista de consentimientos ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único consentimiento ====&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un consentimiento ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
=== Redirección ===&lt;br /&gt;
==== Obtener una lista de redirecciones ====&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única redirección ====&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una redirección ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una redirección ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;header&amp;quot;: 301,&lt;br /&gt;
    &amp;quot;hits&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/99&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/12&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;referer&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una redirección ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect/{redirect_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/4&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/132&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Etiquetas ==&lt;br /&gt;
=== Etiquetas ===&lt;br /&gt;
==== Obtener la lista de etiquetas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/tags&lt;br /&gt;
&lt;br /&gt;
==== Obtener una única etiqueta ====&lt;br /&gt;
curl -X GET /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar una etiqueta ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear una etiqueta ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;access_title&amp;quot;: &amp;quot;Public&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar una etiqueta ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags/{tag_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plantillas ==&lt;br /&gt;
=== Estilos de las plantillas ===&lt;br /&gt;
==== Obtener la lista de los estilos de plantillas ====&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único estilo de plantilla ====&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un estilo de la plantilla ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un estilo de la plantilla ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;fluidContainer&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;logoFile&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarLeftWidth&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarRightWidth&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;cassiopeia - Some Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un estilo de la plantilla ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app}/{template_style_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
	&amp;quot;title&amp;quot;: &amp;quot;new cassiopeia - Default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usuarios ==&lt;br /&gt;
=== Usuarios ===&lt;br /&gt;
==== Obtener una lista de usuarios ====&lt;br /&gt;
curl -X GET /api/index.php/v1/users&lt;br /&gt;
&lt;br /&gt;
==== Obtener un único usuario ====&lt;br /&gt;
curl -X GET /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
==== Borrar un usuario ====&lt;br /&gt;
curl -X DELETE /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
==== Crear un usuario ====&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;block&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;test@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;lastResetTime&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastvisitDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;nnn&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;admin_language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_style&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;editor&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;helpsite&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;timezone&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;qwertyqwerty123&amp;quot;,&lt;br /&gt;
    &amp;quot;password2&amp;quot;: &amp;quot;qwertyqwerty123&amp;quot;,&lt;br /&gt;
    &amp;quot;registerDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;requireReset&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;resetCount&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;sendEmail&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;ad&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Actualizar un usuario ====&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users/{user_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;new@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;username&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Campos de usuarios ===&lt;br /&gt;
#Route Fields Users is: &amp;quot;v1/fields/users&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/J4.x:Joomla_Core_APIs#Fields_Contact|Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Groups Fields Users ===&lt;br /&gt;
#Route Groups Fields Users is: &amp;quot;v1/fields/groups/users&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/J4.x:Joomla_Core_APIs#Groups_Fields_Contact|Groups Fields Contact]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x Web Services{{#translation:}}]]&lt;br /&gt;
[[Category:Needs review]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Joomla_Core_APIs/200/es&amp;diff=950929</id>
		<title>Translations:J4.x:Joomla Core APIs/200/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Joomla_Core_APIs/200/es&amp;diff=950929"/>
		<updated>2022-08-14T05:48:27Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Cuando los puntos de entrada requieren el valor {app} la variable actualmente toma dos valores, site (front end), o administrator {back end)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cuando los puntos de entrada requieren el valor {app} la variable actualmente toma dos valores, site (front end), o administrator {back end)&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780106</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780106"/>
		<updated>2021-01-23T09:20:11Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
===Vista general===&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el plugin de Sistema - Depurador (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;Sistema - Depurador&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Crear un módulo simple ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de ejemplo que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== Registrador PSR-3 ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/62/es&amp;diff=780105</id>
		<title>Translations:Using JLog/62/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/62/es&amp;diff=780105"/>
		<updated>2021-01-23T09:20:08Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Muestra tu sitio Joomla y deberías ver el módulo de registro de ejemplo que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780104</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780104"/>
		<updated>2021-01-23T09:17:43Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
===Vista general===&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el plugin de Sistema - Depurador (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;Sistema - Depurador&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Crear un módulo simple ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== Registrador PSR-3 ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/56/es&amp;diff=780103</id>
		<title>Translations:Using JLog/56/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/56/es&amp;diff=780103"/>
		<updated>2021-01-23T09:17:41Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Crear un módulo simple ]] te ayudará.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780102</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780102"/>
		<updated>2021-01-23T09:17:02Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
===Vista general===&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el plugin de Sistema - Depurador (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;Sistema - Depurador&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== Registrador PSR-3 ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/33/es&amp;diff=780101</id>
		<title>Translations:Using JLog/33/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/33/es&amp;diff=780101"/>
		<updated>2021-01-23T09:17:00Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;Sistema - Depurador&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780100</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780100"/>
		<updated>2021-01-23T08:14:04Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
===Vista general===&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el plugin de Sistema - Depurador (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== Registrador PSR-3 ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/29/es&amp;diff=780099</id>
		<title>Translations:Using JLog/29/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/29/es&amp;diff=780099"/>
		<updated>2021-01-23T08:14:02Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el plugin de Sistema - Depurador (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780098</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780098"/>
		<updated>2021-01-23T08:09:20Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;===Vista general===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
===Vista general===&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== Registrador PSR-3 ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/27/es&amp;diff=780097</id>
		<title>Translations:Using JLog/27/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/27/es&amp;diff=780097"/>
		<updated>2021-01-23T08:09:17Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;===Vista general===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Vista general===&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780096</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780096"/>
		<updated>2021-01-23T08:08:58Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Registrador PSR-3 ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== Registrador PSR-3 ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/66/es&amp;diff=780095</id>
		<title>Translations:Using JLog/66/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/66/es&amp;diff=780095"/>
		<updated>2021-01-23T08:08:55Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Registrador PSR-3 ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Registrador PSR-3 ==&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780094</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780094"/>
		<updated>2021-01-23T08:08:13Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/51/es&amp;diff=780093</id>
		<title>Translations:Using JLog/51/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/51/es&amp;diff=780093"/>
		<updated>2021-01-23T08:08:10Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El registro de Joomla debe ser utilizado en conjunto con las excepciones de PHP, no como un reemplazo. Ver [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] para conocer la historia de esta clase y cómo surgió de las antiguas clases de error compatibles con PHP4.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780092</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780092"/>
		<updated>2021-01-23T08:07:28Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Otras lecturas ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Otras lecturas ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/50/es&amp;diff=780091</id>
		<title>Translations:Using JLog/50/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/50/es&amp;diff=780091"/>
		<updated>2021-01-23T08:07:26Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Otras lecturas ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Otras lecturas ==&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780090</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780090"/>
		<updated>2021-01-23T08:06:55Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/26/es&amp;diff=780089</id>
		<title>Translations:Using JLog/26/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/26/es&amp;diff=780089"/>
		<updated>2021-01-23T08:06:53Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add() &amp;lt;/source&amp;gt; lanzará una excepción si no puede escribir en el archivo de registro. Para evitar esto, tendrías que envolver la llamada en otra función, o implementar tu propia clase de registro y luego incluirla con:&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780088</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780088"/>
		<updated>2021-01-23T08:05:06Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Excepciones ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Excepciones ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/25/es&amp;diff=780087</id>
		<title>Translations:Using JLog/25/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/25/es&amp;diff=780087"/>
		<updated>2021-01-23T08:05:03Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Excepciones ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Excepciones ==&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780086</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780086"/>
		<updated>2021-01-23T08:04:49Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de esto...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/69/es&amp;diff=780085</id>
		<title>Translations:Using JLog/69/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/69/es&amp;diff=780085"/>
		<updated>2021-01-23T08:04:47Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de esto...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Los registradores de Joomla por defecto sólo procesan los elementos &amp;quot;categoría&amp;quot; y &amp;quot;fecha&amp;quot; del array asociativo &amp;lt;tt&amp;gt;contexto&amp;lt;/tt&amp;gt; (parámetro 2), mapeando los valores de estos elementos a la columna correspondiente en su archivo de registro.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780084</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780084"/>
		<updated>2021-01-23T08:04:07Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/68/es&amp;diff=780083</id>
		<title>Translations:Using JLog/68/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/68/es&amp;diff=780083"/>
		<updated>2021-01-23T08:04:04Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Esto devuelve un objeto en el que tiene disponibles los métodos del &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt; de PSR-3, por ejemplo:&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780082</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780082"/>
		<updated>2021-01-23T08:03:19Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que sigue...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/67/es&amp;diff=780081</id>
		<title>Translations:Using JLog/67/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/67/es&amp;diff=780081"/>
		<updated>2021-01-23T08:03:16Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que sigue...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Desde la versión 3.8 Joomla incorpora un registrador que se adhiere a la [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. Esto permite a las bibliotecas que siguen esta recomendación estándar integrarse con el sistema de registro de Joomla. Para usar esto, primero haz:&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780080</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780080"/>
		<updated>2021-01-23T08:02:26Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &amp;#039;jerror&amp;#039;, de modo que si utiliza esta categoría en sus...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/49/es&amp;diff=780079</id>
		<title>Translations:Using JLog/49/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/49/es&amp;diff=780079"/>
		<updated>2021-01-23T08:02:24Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &amp;#039;jerror&amp;#039;, de modo que si utiliza esta categoría en sus...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Tenga en cuenta que el código del núcleo de Joomla configura el registro en la cola de mensajes para la categoría &#039;jerror&#039;, de modo que si utiliza esta categoría en sus mensajes de registro, obtendrá el mensaje mostrado en la barra de mensajes&#039;&#039;&#039;. Por ejemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copiado a la barra de mensajes&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
hará que el mensaje se muestre en el área de mensajes de Joomla, aunque no hayas configurado explícitamente un registrador para que se registre allí.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780078</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780078"/>
		<updated>2021-01-23T07:59:55Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Además de registrar en archivos, puede registrar en otros lugares también, como * el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/48/es&amp;diff=780077</id>
		<title>Translations:Using JLog/48/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/48/es&amp;diff=780077"/>
		<updated>2021-01-23T07:59:53Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Además de registrar en archivos, puede registrar en otros lugares también, como * el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Además de registrar en archivos, puede registrar en otros lugares también, como&lt;br /&gt;
* el área de mensajes de Joomla (donde se muestra el mensaje si llamas a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* una tabla de la base de datos.&lt;br /&gt;
* una simple sentencia echo.&lt;br /&gt;
De estos, probablemente el más útil es el registro en la barra de mensajes, que se puede configurar a través de:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Entonces cuando se hace:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;un error a mostrar&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
obtendrás el mensaje copiado en la barra de mensajes.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780076</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780076"/>
		<updated>2021-01-23T07:56:17Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Registro en otros lugares ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Registro en otros lugares ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/47/es&amp;diff=780075</id>
		<title>Translations:Using JLog/47/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/47/es&amp;diff=780075"/>
		<updated>2021-01-23T07:56:14Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;== Registro en otros lugares ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Registro en otros lugares ==&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780074</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780074"/>
		<updated>2021-01-23T07:55:55Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/23/es&amp;diff=780073</id>
		<title>Translations:Using JLog/23/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/23/es&amp;diff=780073"/>
		<updated>2021-01-23T07:55:52Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Además, si quieres almacenar el archivo de registro en algún lugar distinto a la ruta de registro configurada en los ajustes de Joomla!, existe el ajuste &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780072</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780072"/>
		<updated>2021-01-23T07:55:03Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Además, si deseas almacenar el archivo de registro en algún otro lugar de la ruta de acceso del registro configurado en la configuración de Joomla!, puedes configurar el &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/22/es&amp;diff=780071</id>
		<title>Translations:Using JLog/22/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/22/es&amp;diff=780071"/>
		<updated>2021-01-23T07:54:59Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no deben ser legibles desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo hazlo si sabes lo que estás haciendo!&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780070</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780070"/>
		<updated>2021-01-23T07:53:00Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no debe ser legible desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo incursiona con esto si que sabes lo que estás haciendo!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Además, si deseas almacenar el archivo de registro en algún otro lugar de la ruta de acceso del registro configurado en la configuración de Joomla!, puedes configurar el &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/21/es&amp;diff=780069</id>
		<title>Translations:Using JLog/21/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/21/es&amp;diff=780069"/>
		<updated>2021-01-23T07:52:58Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Existe un parámetro booleano opcional adicional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica si al archivo de registro se le añade el prefijo habitual de:&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780068</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780068"/>
		<updated>2021-01-23T07:52:07Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Es un parámetro booleano opcional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica que al archivo de registro se le antepone el habitual prefijo de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no debe ser legible desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo incursiona con esto si que sabes lo que estás haciendo!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Además, si deseas almacenar el archivo de registro en algún otro lugar de la ruta de acceso del registro configurado en la configuración de Joomla!, puedes configurar el &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780067</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780067"/>
		<updated>2021-01-23T07:51:55Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Es un parámetro booleano opcional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica que al archivo de registro se le antepone el habitual prefijo de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no debe ser legible desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo incursiona con esto si que sabes lo que estás haciendo!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Además, si deseas almacenar el archivo de registro en algún otro lugar de la ruta de acceso del registro configurado en la configuración de Joomla!, puedes configurar el &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/16/es&amp;diff=780066</id>
		<title>Translations:Using JLog/16/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/16/es&amp;diff=780066"/>
		<updated>2021-01-23T07:51:53Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El primer parámetro de addLogger puede tener algunos ajustes adicionales opcionales además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780065</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780065"/>
		<updated>2021-01-23T07:51:02Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&lt;br /&gt;
El primer parámetro addLogger puede tener algunas opciones de configuración adicionales opcionales, además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Es un parámetro booleano opcional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica que al archivo de registro se le antepone el habitual prefijo de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no debe ser legible desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo incursiona con esto si que sabes lo que estás haciendo!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Además, si deseas almacenar el archivo de registro en algún otro lugar de la ruta de acceso del registro configurado en la configuración de Joomla!, puedes configurar el &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780064</id>
		<title>Using JLog/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_JLog/es&amp;diff=780064"/>
		<updated>2021-01-23T07:50:49Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &amp;#039;&amp;#039;&amp;#039;bitwise&amp;#039;&amp;#039;&amp;#039; (bitwise AND, &amp;#039;&amp;#039;&amp;amp;&amp;#039;&amp;#039;; y bitwise NOT, &amp;#039;&amp;#039;~&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
El registro de Joomla le da la capacidad de registrar mensajes en archivos y en la pantalla (dentro de la consola de depuración de Joomla! en la parte inferior de la página web) y la clase principal de Joomla que sustenta esto es JLog. En la nueva convención de nomenclatura esta es la clase Log dentro del espacio de nombres Joomla\CMS\Log\Log.&lt;br /&gt;
&lt;br /&gt;
El registro puede ser controlado dinámicamente a través de la Configuración Global de Joomla y configurando el sistema - plugin de depuración (que se suministra con Joomla). En general, estas instalaciones le permiten:&lt;br /&gt;
* Activar o desactivar el registro DEBUG - para que normalmente no consuma recursos innecesariamente, pero tenga la información de registro para ayudar a la solución de problemas cuando hay incidencias, por ejemplo en un sitio en vivo que tiene su extensión instalada.&lt;br /&gt;
* dirigir los mensajes de registro a un archivo de registro específico para su propia extensión.&lt;br /&gt;
* ver los mensajes de registro en la consola de depuración - puede seleccionar el grupo de usuarios a los que deben mostrarse los mensajes de registro, de modo que en un sitio en vivo los desarrolladores pueden ver los mensajes mientras que otros usuarios no se ven afectados.&lt;br /&gt;
* filtrar los mensajes de la consola de depuración por prioridad (es decir, INFO, DEBUG, WARNING, etc.) y por categoría. (Usted es libre de definir sus propias categorías).&lt;br /&gt;
Además, los mensajes de registro pueden traducirse a diferentes idiomas.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran las principales opciones de configuración relacionadas con el registro.&lt;br /&gt;
La activación de la depuración y la visualización de la consola de depuración de Joomla se controla a través de las opciones de configuración global.&lt;br /&gt;
&lt;br /&gt;
[[File:Global conf debug-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
El registro en el archivo de registro general se controla a través de la pestaña de registro de la configuración del plugin de Joomla &amp;quot;System - Debug&amp;quot;. (En el menú del administrador, haga clic en Extensiones / Plugins, busque el plugin Sistema - Depurador. Haga clic en él para editar sus opciones configurables).&lt;br /&gt;
&lt;br /&gt;
[[File:Debug logging settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
Y las opciones dentro de la pestaña de control del plugin se muestran en la consola de depuración de Joomla.&lt;br /&gt;
&lt;br /&gt;
[[File:Debug plugin settings-en.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Archivo de Registro Básico ==&lt;br /&gt;
&lt;br /&gt;
Para registrar un mensaje se utiliza la función &amp;lt;tt&amp;gt;JLog::add()&amp;lt;/tt&amp;gt;. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;my error message&#039;, JLog::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utilizando la nueva convención de nomenclatura de clases, utilice en su lugar:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los parámetros son&lt;br /&gt;
# Una cadena de mensajes. Puede utilizar la traducción con estos. (Por ejemplo, JText::_(&#039;MY_EXTENSION_ERR_MSG&#039;) También puede mostrar los valores de las variables, siempre que los convierta a un formato de cadena. (Por ejemplo, utilizando __toString() si el tipo de la variable lo soporta).&lt;br /&gt;
# Una prioridad, que puede ser una de las siguientes: JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG (basado en los niveles de gravedad estándar de syslog / RFC 5424 - ver [https://en.wikipedia.org/wiki/Syslog artículo de wikipedia sobre syslog]).&lt;br /&gt;
# Una categoría, que es sólo una cadena de texto. Puedes definir las categorías que quieras, pero es mejor definirlas para evitar posibles choques con las de otras extensiones.&lt;br /&gt;
&lt;br /&gt;
Puede ser muy útil para solucionar problemas si incluye mensajes de depuración de diagnóstico en su extensión. En este caso, incluya su mensaje de registro dentro de una comprobación de JDEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (JDEBUG)&lt;br /&gt;
{&lt;br /&gt;
    JLog::add(&#039;my debug message&#039;, JLog::DEBUG, &#039;my-debug-category&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de ejemplo de registro básico ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código de un módulo simple de Joomla que puede instalar y ejecutar para demostrar el uso de la funcionalidad de registro. Si no estás seguro sobre el desarrollo y la instalación de un módulo de Joomla, entonces siguiendo el tutorial en [[S:MyLanguage/J3.x:Creating a simple module/Introduction| Creating a simple module ]] te ayudará. &lt;br /&gt;
&lt;br /&gt;
En una carpeta mod_sample_log cree los siguientes 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joomla Log demo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Code demonstrating use of Joomla Log class to log messages&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_sample_log&amp;quot;&amp;gt;mod_sample_log.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mod_sample_log.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
&lt;br /&gt;
Log::add(&#039;my error message&#039;, Log::ERROR, &#039;my-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
JLog::add(&#039;my old error message&#039;, JLog::WARNING, &#039;my-old-error-category&#039;);&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Error message logged&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprima el directorio mod_sample_log para crear &amp;lt;tt&amp;gt;mod_sample_log.zip&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dentro de tu administrador de Joomla ve a Instalar Extensiones y a través de la pestaña Subir Archivo del Paquete sube este archivo zip para instalar este módulo de registro de ejemplo. &lt;br /&gt;
&lt;br /&gt;
Haz visible este módulo editándolo (haz clic en él dentro de la página de Módulos) entonces:&lt;br /&gt;
# modificando su estado a Publicado&lt;br /&gt;
# seleccionando una posición en la página para que se muestre&lt;br /&gt;
# en la pestaña de asignación de menú, especifique las páginas en las que debe aparecer&lt;br /&gt;
&lt;br /&gt;
Compruebe la configuración de los ajustes mostrados en la parte superior de esta página web. En particular, asegúrese de que el plugin Sistema - Depurador está activado y que &amp;quot;Registro de casi todo&amp;quot; está configurado como &amp;quot;Sí&amp;quot;. Anote también la carpeta donde se almacenan sus archivos de registro.&lt;br /&gt;
&lt;br /&gt;
Muestra tu sitio Joomla y deberías ver el módulo de registro de muestra que aparece. En su carpeta de archivos de registro debe encontrar sus mensajes de error en el archivo everything.php.&lt;br /&gt;
&lt;br /&gt;
Encienda también la consola de depuración y confirme que puede ver los mensajes de error en su sección de mensajes de registro.&lt;br /&gt;
&lt;br /&gt;
== Registro en un archivo de registro específico== &lt;br /&gt;
&lt;br /&gt;
Puede utilizar &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; para configurar el registro en un archivo de registro adicional, filtrando los mensajes de registro que se enviarán allí por prioridad (el &amp;quot;nivel de gravedad&amp;quot;) y/o categoría. Los parámetros de &amp;lt;tt&amp;gt;JLog::addLogger()&amp;lt;/tt&amp;gt; son:&lt;br /&gt;
# un array con los detalles de configuración - incluyendo el nombre del archivo de registro.&lt;br /&gt;
# los niveles de gravedad a registrar en ese archivo.&lt;br /&gt;
# un array con las categorías a registrar en ese fichero. (Si el parámetro 4 se establece como &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, este array define las categorías que NO deben registrarse en el archivo).&lt;br /&gt;
# (a menudo omitido) un booleano que especifica si el parámetro 3 es una lista de inclusión. (Por defecto, P4 = &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;) o una lista de exclusión (P4 = &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si has desarrollado una extensión &#039;&#039;com_helloworld&#039;&#039; podrías utilizar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.log.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets messages of all log levels to be sent to the file.&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    // The log category/categories which should be recorded in this file.&lt;br /&gt;
    // In this case, it&#039;s just the one category from our extension.&lt;br /&gt;
    // We still need to put it inside an array.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, cuando registre un mensaje, especifique la categoría como &#039;&#039;com_helloworld&#039;&#039;, como en el ejemplo siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(JText::_(&#039;COM_HELLOWORLD_ERROR_MESSAGE_123&#039;), JLog::ERROR, &#039;com_helloworld&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que su mensaje de registro se escriba en &#039;&#039;com_helloworld.log.php&#039;&#039;. Si la configuración del plugin Sistema - Depurador tiene la opción &amp;quot; Registro de casi todo&amp;quot; establecida en Sí, el mensaje aparecerá también en el archivo de registro común &#039;&#039;everything.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; Puedes desear combinar esto con la sección [[S:MyLanguage/Display error messages and notices|Mostrar mensajes de error y avisos]]  para mostrar notificaciones de error visibles a los usuarios.&lt;br /&gt;
&lt;br /&gt;
También puedes agregar un registrador adicional que capture sólo las notificaciones críticas y de emergencia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets critical and emergency log level messages to be sent to the file.&lt;br /&gt;
    JLog::CRITICAL + JLog::EMERGENCY,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También puede excluir un nivel de prioridad específico para que no se incluya. Por ejemplo, para registrar todos los mensajes menos los de DEBUG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.all_but_debug.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
== Formato del archivo de registro ==&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro addLogger puede tener algunas opciones de configuración adicionales opcionales, además de la entrada &amp;lt;tt&amp;gt;text_file&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Hay, por ejemplo, la entrada &amp;lt;tt&amp;gt;text_entry_format&amp;lt;/tt&amp;gt;, especificando el formato de cada línea en el archivo de registro.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El formato predeterminado es:&lt;br /&gt;
&lt;br /&gt;
    &#039;{DATETIME} {PRIORITY}      {CATEGORY}      {MESSAGE}&#039;&lt;br /&gt;
&lt;br /&gt;
Aquí hay un ejemplo de un formato diferente, que muestra cómo omitir la categoría:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Sets file name.&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.critical_emergency.php&#039;,&lt;br /&gt;
         // Sets the format of each line.&lt;br /&gt;
         &#039;text_entry_format&#039; =&amp;gt; &#039;{DATETIME} {PRIORITY} {MESSAGE}&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    // Sets all but DEBUG log level messages to be sent to the file.&lt;br /&gt;
    JLog::ALL &amp;amp; ~JLog::DEBUG,&lt;br /&gt;
    // The log category which should be recorded in this file.&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Además de los marcadores de posición que se muestran arriba en la cadena predeterminada, los valores siguientes están disponibles:&lt;br /&gt;
&lt;br /&gt;
    {CLIENTIP}      (this is the IP address of the client)&lt;br /&gt;
    {TIME}&lt;br /&gt;
    {DATE}&lt;br /&gt;
&lt;br /&gt;
Es un parámetro booleano opcional &amp;lt;tt&amp;gt;text_file_no_php&amp;lt;/tt&amp;gt;, que especifica que al archivo de registro se le antepone el habitual prefijo de:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    #&amp;lt;?php die(&#039;Forbidden.&#039;);?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&#039;Nota:&amp;quot;&#039; por lo general, no debes establecer este valor a &#039;&#039;false&#039;&#039;. Los archivos de registro no debe ser legible desde el exterior, ya que pueden proporcionar información valiosa acerca de tu sistema para los atacantes.&lt;br /&gt;
¡Sólo incursiona con esto si que sabes lo que estás haciendo!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Además, si deseas almacenar el archivo de registro en algún otro lugar de la ruta de acceso del registro configurado en la configuración de Joomla!, puedes configurar el &amp;lt;tt&amp;gt;text_file_path&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging to Other Places ==&lt;br /&gt;
&lt;br /&gt;
As well as logging to files, you can log to other places as well, such as&lt;br /&gt;
* the Joomla message area (where the message is shown if you call &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage()&amp;lt;/source&amp;gt;).&lt;br /&gt;
* a database table.&lt;br /&gt;
* just a simple echo statement.&lt;br /&gt;
Of these, probably the most useful is the logging to the message bar, which you can set up via:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(array(&#039;logger&#039; =&amp;gt; &#039;messagequeue&#039;), JLog::ALL, array(&#039;msg-error-cat&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then when you do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;an error to display&#039;, JLog::ERROR, &#039;msg-error-cat&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
you will get the message copied to the message bar.&lt;br /&gt;
&#039;&#039;&#039;Note that Joomla core code sets up logging to the messagequeue for category &#039;jerror&#039;, so that if you use this category in your log messages, you will get the message displayed on the message bar.&#039;&#039;&#039; For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::add(&#039;error copied to message bar&#039;, JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will result in the message being shown in the Joomla message area, even though you haven&#039;t explicitly set up a logger to log there.&lt;br /&gt;
&lt;br /&gt;
== PSR-3 Logger ==&lt;br /&gt;
Since version 3.8 Joomla incorporates a logger which adheres to the [https://www.php-fig.org/psr/psr-3/ PSR-3 Logger Interface]. This enables libraries which follow this standard recommendation to integrate with the Joomla logging system. To use this, first do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Log\Log;&lt;br /&gt;
$psr3Logger = Log::createDelegatedLogger();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This returns an object on which you have available the methods of the PSR-3 &amp;lt;tt&amp;gt;LoggerInterface&amp;lt;/tt&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$psr3Logger-&amp;gt;critical(&amp;quot;critical error text&amp;quot;, array(&amp;quot;category&amp;quot; =&amp;gt; &amp;quot;my-critical-category&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The default Joomla loggers process only the &amp;quot;category&amp;quot; and &amp;quot;date&amp;quot; elements of the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; associative array (parameter 2), mapping the values of these elements to the corresponding column in your log file. &lt;br /&gt;
&lt;br /&gt;
== Exceptions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;JLog::add()&amp;lt;/source&amp;gt; will throw an exception if it can&#039;t write to the log file. To avoid this, you&#039;d have to either wrap the call in another function, or implement your own logger class and then include it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JLog::addLogger(&lt;br /&gt;
    array(&lt;br /&gt;
         // Use mycustomlogger.&lt;br /&gt;
         &#039;logger&#039; =&amp;gt; &#039;mycustomlogger&#039;,&lt;br /&gt;
         &#039;text_file&#039; =&amp;gt; &#039;com_helloworld.errors.php&#039;&lt;br /&gt;
    ),&lt;br /&gt;
    JLog::ALL,&lt;br /&gt;
    array(&#039;com_helloworld&#039;)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
Joomla logging should be used in tandem with PHP exceptions, not as a replacement. See [[J2.5:Exceptions_and_Logging_in_Joomla_Platform_11.1_and_Joomla_2.5]] for backstory on this class and how it arose from the old Joomla PHP4 compatible error classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 1.7{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 2.5{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/46/es&amp;diff=780063</id>
		<title>Translations:Using JLog/46/es</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Using_JLog/46/es&amp;diff=780063"/>
		<updated>2021-01-23T07:50:47Z</updated>

		<summary type="html">&lt;p&gt;Maikolort: Created page with &amp;quot;Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &amp;#039;&amp;#039;&amp;#039;bitwise&amp;#039;&amp;#039;&amp;#039; (bitwise AND, &amp;#039;&amp;#039;&amp;amp;&amp;#039;&amp;#039;; y bitwise NOT, &amp;#039;&amp;#039;~&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Los niveles de prioridad de JLog se implementan como bits separados de un entero, por lo que puedes utilizar operaciones &#039;&#039;&#039;bitwise&#039;&#039;&#039; (bitwise AND, &#039;&#039;&amp;amp;&#039;&#039;; y bitwise NOT, &#039;&#039;~&#039;&#039;) para calcular los niveles de registro apropiados. &amp;lt;tt&amp;gt;JLog::All&amp;lt;/tt&amp;gt; es un entero constante que tiene todos los bits relevantes configurados, de modo que se incluyen todos los niveles de prioridad de Joomla.&lt;/div&gt;</summary>
		<author><name>Maikolort</name></author>
	</entry>
</feed>